Two way binding of Object properties and DOM nodes. BoundObject.someProperty
changes? So does the associated nodes textContent
. A target node's textContent
changes? So does the associated Object property.
Currently only supports textContent
changes on the node. Attributues should be possible. As well as working with templates.
var target = document.querySelector('#fun');
var myModel = new BoundObject({
'fun': target
});
// Will set bound node's textContent as well
myModel.set('fun', 'Hello');
// Will set node's textContent on bound property
target.textContent = 'World!';
// stick other properties
var testTarget = document.querySelector('#test');
myModel.test = 'neato';
// value of `myModel.test` will be pushed to `testTarget` node
myModel.stick('test', testTarget);
To get a better idea of how it works, read through tests/boundobject.spec.js
. Run the test with npm test
.
At Ecquire we use MutationObserver's in place of setInterval
to check when/where we should inject our HTML.
It's a cool API and seemed like an appropriate solution to binding JavaScript Object properties to DOM nodes.
This has not been used in any production code and is more of a concept at this point. Ideas and contributions are more than welcome.