Javascript 主干-可以从模型中获取集合

Javascript 主干-可以从模型中获取集合,javascript,backbone.js,Javascript,Backbone.js,我想知道是否有一种方法可以从它的一个模型中获得一个集合的引用。例如,如果以下集合中的任何人不知何故意识到属于一个集合或多个集合 (函数(){ window.App={ 型号:{}, 视图:{}, 集合:{} }; App.Models.Person=Backbone.Model.extend({ 默认值:{ 姓名:'约翰', 电话:555-555-5555 } }); App.Views.Person=Backbone.View.extend({ 标记名:“li”, 模板:\ u.templat

我想知道是否有一种方法可以从它的一个模型中获得一个集合的引用。例如,如果以下集合中的任何人不知何故意识到属于一个集合或多个集合

(函数(){
window.App={
型号:{},
视图:{},
集合:{}
};
App.Models.Person=Backbone.Model.extend({
默认值:{
姓名:'约翰',
电话:555-555-5555
}
});
App.Views.Person=Backbone.View.extend({
标记名:“li”,
模板:\ u.template(“--”),
render:function(){
var template=this.template(this.model.toJSON());
这个.$el.html(模板);
归还这个;
}
});
App.Collections.People=Backbone.Collection.extend({
型号:App.Models.Person
});
App.Views.People=Backbone.View.extend({
标记名:“ul”,
加:职能(人){
var personView=newapp.Views.Person({model:Person});
这个.el.append(personView.render().el);
归还这个;
},
render:function(){
this.collection.each(this.add,this);
归还这个;
}
});
})();
var peeps=[{name:'Mary'},{name:'David'},{name:'Tiffany'}];
var people=新的App.Collections.people(peeps);
var peopleView=newapp.Views.People({collection:People});
peopleView.render().$el.appendTo('body');

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

通过查看源代码,可以看出这是用来在调用模型的
destroy()
方法时从集合中删除模型的操作

更新:查看哪个创建了三人模型和两个集合。它将它们打印到控制台。它看起来像
model。collection
仅指此人添加到的第一个集合,而不是第二个集合

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