Experimental ractive adaptor for ractive objects. This makes it possible to use template-less Ractive objects as models.
Find more Ractive.js plugins at docs.ractivejs.org/latest/plugins
v1.0.0 changes the behavior of doing
require('ractive-ractive')
(eg, in Browserify). See the changelog for upgrade instructions.
Ractive.defaults.adapt.push('Ractive');
parent = new Ractive();
user = new Ractive();
parent.set('user', user);
Changes in children are propagated to the parent:
user.set('name', 'Jake');
parent.get('user.name') //=> "Jake"
Changes in the parent are propagated to the children:
parent.set('user.name', 'Matt');
user.get('name') //=> "Matt"
Everything you'd expect to work will work.
- bi-directional propagation
- observers
- templates
- computed properties
However, these things are not supported, but may be in the future:
- circular dependencies (an error will be thrown)
- events (see ractive#1249)
It will trigger a few events:
wrap
- called when the instance is set as an attribute of another instanceunwrap
- called when the instance has been unset from its parentwrapchild
- called when the instance gets an Ractive attribute setunwrapchild
- called when the instance gets an Ractive attribute unset
To illustrate:
parent = new Ractive();
child = new Ractive();
parent.set('x', child);
// triggers `wrap(parent, 'x')` on child
// triggers `wrapchild(child, 'x')` on parent
parent.set('x', undefined);
// triggers `unwrap(parent, 'x')` on child
// triggers `unwrapchild(child, 'x')` on parent
ractive-ractive is available via npm.
$ npm install --save ractive-ractive
In CommonJS:
Ractive.adaptors.Ractive = require('ractive-ractive');
Ractive.defaults.adapt = ['Ractive'];
Without module loaders, the adaptor is available as "Ractive"
under Ractive.adaptors.Ractive
.
Browser compatibilty: available anywhere Ractive is. (Test suite)
Hat tip to the original Ractive adaptor from @Rich-Harris.
(src)
ractive-ractive © 2014+, Rico Sta. Cruz. Released under the MIT License.
Authored and maintained by Rico Sta. Cruz with help from contributors (list).
ricostacruz.com · GitHub @rstacruz · Twitter @rstacruz