2013-04-12 9 views
17

Ich frage mich, ob es einen Weg gibt, einen Verweis auf eine Sammlung von einem seiner Modelle zu bekommen. Zum Beispiel, wenn einer der Personen in der Sammlung sich irgendwie der Zugehörigkeit zu einer Sammlung oder mehreren Sammlungen bewusst ist. FiddleBackbone - Möglich, die Sammlung von einem Modell zu bekommen

(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'); 

Antwort

25

Jedes Modell verfügt über eine Eigenschaft collection genannt. In Ihrer Geige wird das Hinzufügen der console.log(people.models[0].collection) die Sammlung ausdrucken.

Wenn Sie durch den Quellcode schauen, sieht das so aus, als würde man beispielsweise ein Modell aus einer Sammlung entfernen, wenn die Methode destroy() des Modells aufgerufen wird.

Update: siehe this updated fiddle, die drei Personenmodelle und zwei Sammlungen erstellt. Es druckt sie auf die Konsole. Es sieht aus wie model.collection bezieht sich nur auf die erste Sammlung, die die Person hinzugefügt wurde, nicht die zweite.

Verwandte Themen