Testing Filtered Backbone Collections (child sync)
by Aubrey Taylor
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min.js"></script>
JavaScript
var data, root, filterset, child, updateChild;
data = [{
'title': 'foo',
'complete': false
}, {
'title': 'bar',
'complete': false
}, {
'title': 'baz',
'complete': false
}, {
'title': 'qux',
'complete': true
}, {
'title': 'dog',
'complete': true
}, {
'title': 'cat',
'complete': true
}];
updateChild = function(child, list, filter) {
child.reset(list.where(filter));
console.log('child after updateChild: ', child);
console.log('');
};
root = new Backbone.Collection(data);
filterset = root.where({complete: true});
child = new Backbone.Collection(filterset);
console.log('orig child: ', child);
console.log('');
root.on('add', function(model, list, opts) {
updateChild(child, list, {complete:true});
});
console.log('adding item to root, should append to child');
console.log('root: ', root);
console.log('');
root.add({title: 'foop', complete: true});
console.log('adding item to root, should *not* append to child');
console.log('root: ', root);
console.log('');
root.add({title: 'barp', complete: false});