Backbone.js:有没有办法在创建集合时为集合中的所有模型设置属性

时间:2012-06-08 18:16:22

标签: javascript backbone.js

我想知道在实例化一个新的Collection时是否有任何方法可以传入一个值,该新的Collection将被设置为添加到集合中的所有新模型的属性。如,

allSchools = [/* list of schools */];
this.schoolTypes = new Backbone.Collection([], { model:SchoolType }); //pass in allSchools here, somehow
this.schoolTypes.add({name:'New SchoolType'});

新添加的模型将有一个this.allSchools(或this.options.allSchools或类似的东西)。似乎应该有一个简单的方法来做到这一点?目前我只是访问全球allSchools对象,但它不是非常模块化的。

2 个答案:

答案 0 :(得分:1)

这可能不是最好的方法,但您可以添加一个向后链接到模型,让它访问它的父集合:

this.schoolType.allSchools = allSchools;
var col = this.schoolType;
this.schoolType.each(function(el,i){
    el.collection = col;
});
// ...
// then access all the schools from your SchoolType model `m` : 
if(m.collection)
    var allSchools = m.collection.allSchools;

答案 1 :(得分:0)

正如他在评论中提到的,模型有一个内置的.collection属性。因此,如果我在集合上设置属性,我可以从集合中的任何模型访问它,如下所示:

schoolType = schoolTypes.at(0);
allSchools = schoolType.collection.allSchools;