watch-property
Monitor a property, or multiple properties, on an object and return true when the value has changed between invocations.
What is this useful for?
This module has many use-cases, one of which would be for help with an Immediate-Mode GUI or updating expensive attributes in a render loop.
Install
npm install watch-property --save
Basic Example
var object = string: 'foo'; var stringChanged = ; ; //falseobjectstring = 'bar';; //true; //false
API
watch(object, key [, predicateFn, retainInitValue])
Provide an object and a key to watch. Optionally you can provide a predicateFn(value, oldValue):Boolean
function to determine if changed, or set retainInitValue
to true if you would like to consider any value except the first as a changed value.
watch.any(object, keysArray [, predicateFn, retainInitValue])
The same as watchProperty
except receives an array of keys to watch and if any have changed values the function returns true.
alias: watch.some
watch.all(object, keysArray [, predicateFn, retainInitValue])
The same as watchProperty
except receives an array of keys to watch and only returns true if all of the values have changed.
alias: watch.every
Web Example
var watch = eventMap = ; var byId = documentgetElementById container = pressedDisplay = nameDisplay = clickDisplay = ; var parameters = pressed: false numClicks: 0 name: 'kyle'; var clicksChanged = btnIsPressed = //retainInitValue is 3rd parameter nameChanged = ; { pressedDisplayinnerHTML = ? 'Pressed' : 'Released'; if clickDisplayinnerHTML = parametersnumClicks; if nameDisplayinnerHTML = parametersname; window;} ; ;
some
)
Example using watchProperty.any (alias var watch = ;var el = document; var position = top: 0 left: 0; var positionChanged = watch; { elstyletop = positiontop + 'px'; elstyleleft = positionleft + 'px';} ; { if ; window;} ; //do anything to be modifying the position (a tween or a user action)
License
MIT, see LICENSE.md for details.