我有骨干模型层次结构,如
ModelA = Backbone.Model.extend({
initialize : function(){
this.set("prop1",10);
}
});
ModelB = ModelA.extend({
this.set("prop2",new ModelC())
});
ModelD = ModelA.extend({
this.set("prop3",new ModelE())
});
ModelC和ModelE也是Backbone模型。
我想将ModelB和ModelD对象存储到1个集合中
我创建了像
这样的集合collection = Backbone.Collection({
model : ModelA
});
我正在做什么 -
我将ModelA对象存储到集合
将集合转换为json。
从json重新创建集合。
这里我从集合中获取ModelA对象,但想要特定类型的对象,如ModelB,ModelD等。
我怎样才能做到这一点?
答案 0 :(得分:1)
你可以通过提供一个指定类型的属性然后为你的集合指定一个自定义构造函数来欺骗它创建正确的模型,如@McGarnagle所述
collection = Backbone.Collection({
model : function(attrs, options){
if(!attrs || !attrs.modelType)
return new ModelA(attrs, options)
if(attrs.modelType === 'ModelB')
return new ModelB(attrs, options)
//etc...
}
});