<div id='rm_manual'> <p>First Person: <input class='input-small pull-right' data-bind="value: occupants()[0].name, valueUpdate: 'keyup'"/> <div>(home: <span data-bind="text: occupants()[0].livesIn().location"></span>)</div> </p> <p>Second Person: <input class='input-small pull-right' data-bind="value: occupants()[1].name, valueUpdate: 'keyup'"/> <div>(home: <span data-bind="text: occupants()[1].livesIn().location"></span>)</div> </p> <p>Location: <input class='input-small pull-right' data-bind="value: location, valueUpdate: 'keyup'"/></p> <p> Has these people living there: <ul data-bind="foreach: occupants"> <li data-bind="text: name"></li> </ul> </p> </div>
bob = new Backbone.Model({name: 'Bob'}) fred = new Backbone.Model({name: 'Fred'}) house = new Backbone.Model({ location: 'In the middle of our street' occupants: new Backbone.Collection([bob, fred]) }) bob.set({livesIn: house}) fred.set({livesIn: house}) view_model = kb.viewModel(house) ko.applyBindings(view_model, $('#rm_manual')[0])
var ko = kb.ko; var bob = new Backbone.Model({name: 'Bob'}); var fred = new Backbone.Model({name: 'Fred'}); var house = new Backbone.Model({ location: 'In the middle of our street', occupants: new Backbone.Collection([bob, fred]) }); bob.set({livesIn: house}); fred.set({livesIn: house}); view_model = kb.viewModel(house); ko.applyBindings(view_model, $('#rm_manual')[0]);
First Person:
Second Person:
Location:
Has these people living there:
Let's look at an example from the Backbone-Relational site:
<div id='br_relational_models'> <p>First Person: <input class='input-small pull-right' data-bind="value: occupants()[0].name, valueUpdate: 'keyup'"/> <div>(home: <span data-bind="text: occupants()[0].livesIn().location"></span>)</div> </p> <p>Second Person: <input class='input-small pull-right' data-bind="value: occupants()[1].name, valueUpdate: 'keyup'"/> <div>(home: <span data-bind="text: occupants()[1].livesIn().location"></span>)</div> </p> <p>Location: <input class='input-small pull-right' data-bind="value: location, valueUpdate: 'keyup'"/></p> <p> Has these people living there: <ul data-bind="foreach: occupants"> <li data-bind="text: name"></li> </ul> </p> </div>
House = Backbone.RelationalModel.extend({ relations: [{ type: Backbone.HasMany key: 'occupants' relatedModel: 'Person' reverseRelation: key: 'livesIn' }] }) Person = Backbone.RelationalModel.extend({})
var House = Backbone.RelationalModel.extend({ relations: [{ type: Backbone.HasMany, key: 'occupants', relatedModel: 'Person', reverseRelation: { key: 'livesIn' } }] }); var Person = Backbone.RelationalModel.extend({});
bob = new Person({id: 'person-1', name: 'Bob'}) fred = new Person({id: 'person-2', name: 'Fred'}) house = new House({ location: 'In the middle of our street' occupants: ['person-1', 'person-2'] }) view_model = kb.viewModel(house) ko.applyBindings(view_model, $('#br_relational_models')[0])
var ko = kb.ko; var bob = new Person({id: 'person-1', name: 'Bob'}); var fred = new Person({id: 'person-2', name: 'Fred'}); var house = new House({ location: 'In the middle of our street', occupants: ['person-1', 'person-2'] }); var view_model = kb.viewModel(house); ko.applyBindings(view_model, $('#br_relational_models')[0]);
First Person:
Second Person:
Location:
Has these people living there: