我有model
:
window.LayerModel = Backbone.Model.extend({
defaults:{
'id':'unknow',
'type':'unkonw',
'preId':'unknow',
'data': {}
}
}
然后我定义了一个集合:
window.LayerManageCollection = Backbone.Collection.extend({
model: LayerModel
})
然后我在视野中初始化它:
window.LayerMasterManageView = Backbone.View.extend({
initialize: function () {
//here I have a gobal javascript variable named "localdata"
//which have 17 items in an array,each of them is object type
this.collection = new LayerManageCollection(localdata);
console.log('this collection', this.collection);
}
}
但是集合的长度是1!,只有一个模型!,
奇怪的是,如果将"defaults"
更改为"default"
,则收集结果符合我的要求,长度为17
为什么会这样?我该如何解决这个问题?
答案 0 :(得分:4)
模型的默认idAttribute
为id
。因为您在id
中定义了defaults
,所以您将始终创建相同的模型,因为在创建重复模型时,Backbone会安静地出错,这就是您只能看到1个模型的原因。
答案 1 :(得分:0)
我认为您的问题与localdata
中存在的对象有关
localdata
中有多少个对象具有不同的id
字段
您应该为localdata
数组中的每个对象提供不同的ID,或者只删除模型id
中defaults
的{{1}}字段。
每当您将名称从LayerModel
更改为defaults
时,因为没有默认ID骨干将其作为新模型,因此将其添加到集合中。
因此您可以将default
更改为任何其他名称,例如defaults
,它会有相同的行为