npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

binding.js

v0.0.12

Published

Bind and watch updating any property changes of javascript object or DOM-element.

Downloads

23

Readme

Binding.js

npm:issues:license:bsd-3-clause

Bind and watch updating property or member changes of javascript object or DOM-element.

See CHANGE.md for changes

Features

  • Blazing fast over dirty-check and Object.observe
  • Atomic updates
  • Properties filter
  • Support watching DOM properties and attributes
  • Allowing properties with accessors
  • Sync with zero latency or async binding
  • Follows semantic versioning for releases
  • No dependencies
  • Allowing static, instanced and prototype methods
  • Simplification interface (radmap for v0.1.0)
  • Several per-property callbacks (roadmap for v0.1.0)
  • Nested object properties filter and observing (roadmap for v1.0.0)
  • Drop MutationObservers and use more low-level methods
  • One-way, two-way or once type of binding (roadmap for v1.0.0)

Get started

binding.js on node package manager

node.js install:

npm install binding.js

browser setup:

<script src="binding.js"></script>

Syntax

Binding.on(object, properties, callback, options)

Description

Binding.on add watches for assignment to a properties named properties in object, calling callback(target, property, newValue, oldValue) whenever any property in properties list is set.

Usage

Setup target object or prototype:

var target = {
   num:  0,
   text: ''
}

Begin watching one of property:

Binding.on(target,'text', function (target, property, newValue, oldValue) {
   console.log('new value of text:', newValue,' old value: ', oldValue)
})

or explicitly watching several properties:

Binding.on(target, ['text', 'num'], function (target, property, newValue, oldValue) {
   switch (property) {
       case 'text':
       console.log('new value of text:', newValue)
       break
       case 'num':
       console.log('new value of num:', newValue)
       break
   }
})

or watching all properties (you can use: [], null, undefined or ''):

Binding.on(target, null, function (target, property, newValue, oldValue) {
   switch (property) {
       case 'text':
       console.log('new value of text:', newValue)
       break
       case 'num':
       console.log('new value of num:', newValue)
       break
   }
})

after that we can change some properties:

target.num  = 100500
target.text = 'bang!'

and get console output:

new value of num: 100500
new value of text: bang!

Binding.off(object, properties)

Description

Binding.off removes a watchpoint set with the Binding.on method.

Usage

Unbind only one watching property:


Binding.off(target, 'text')

or unbind all watching properties:


Binding.off(target)