17

我想知道是否有办法从其中一个模型中获取对集合的引用。例如,如果以下集合中的任何人以某种方式知道属于一个集合或多个集合。 小提琴

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

1 回答 1

25

每个模型都有一个名为 的属性collection。在您的小提琴中,添加console.log(people.models[0].collection)将打印出集合。

查看源代码,看起来这是用于在destroy()调用模型的方法时从集合中删除模型之类的操作。

更新:查看这个更新的小提琴,它创建了三个人物模型和两个集合。它将它们打印到控制台。看起来model.collection只指该人被添加到的第一个集合,而不是第二个。

于 2013-04-12T04:12:23.453 回答