2013-04-12 28 views
17

Modellerinden birinden bir koleksiyona referans almanın bir yolu olup olmadığını merak ediyorum. Örneğin, aşağıdaki koleksiyondaki herhangi bir kişi bir şekilde bir koleksiyona veya birden fazla koleksiyona ait olduğunun farkındadır. FiddleBackbone - Koleksiyondan bir model alınabilir

(function() { 
window.App = { 
    Models: {}, 
    Views: {}, 
    Collections: {} 
}; 

App.Models.Person = Backbone.Model.extend({ 
    defaults: { 
     name: 'John', 
     phone: '555-555-5555' 
    } 
}); 

App.Views.Person = Backbone.View.extend({ 
    tagName: 'li', 

    template: _.template("<%= name %> -- <%= phone %>"), 

    render: function(){ 
     var template = this.template(this.model.toJSON()); 

     this.$el.html(template); 

     return this; 
    } 
}); 

App.Collections.People = Backbone.Collection.extend({ 
    model: App.Models.Person 
}); 

App.Views.People = Backbone.View.extend({ 
    tagName: 'ul', 

    add: function(person){ 
     var personView = new App.Views.Person({ model: person }); 

     this.$el.append(personView.render().el); 

     return this; 
    }, 

    render: function() { 
     this.collection.each(this.add, this); 

     return this; 
    } 
}); 


})(); 

var peeps = [ { name: 'Mary' }, { name: 'David' }, { name: 'Tiffany' } ]; 

var people = new App.Collections.People(peeps); 

var peopleView = new App.Views.People({ collection: people }); 

peopleView.render().$el.appendTo('body'); 

cevap

25

Her model collection adlı bir özelliğe sahiptir. Kemanınızda, console.log(people.models[0].collection) eklenmesi koleksiyonu yazdırır.

Kaynak koduna bakıldığında, modelin destroy() yöntemi çağrıldığında bir koleksiyondan bir modeli kaldırmak gibi şeyler yapmak için kullanılan şey bu gibi görünüyor.

Güncelleştirme: üç kişi modeli ve iki koleksiyon oluşturan this updated fiddle numaralı makaleye bakın. Onları konsola yazdırır. model.collection sadece kişinin eklendiği ilk koleksiyona değil, ikincisine işaret eder.

İlgili konular