我将ID设置为我的模型,如下所示:
var globalCounter = 0;
var MyModel = Backbone.Model.extend({
initialize: function () {
this.set('id', globalCounter);
globalCounter += 1;
}
});
现在我将一堆MyModel
的实例添加到集合中:
var i, model;
MyCollection = Backbone.Collection.extend({});
myCollection = new MyCollection();
for(i = 0; i < 3; i += 1) {
model = new MyModel();
myCollection.add(model);
}
问题是似乎没有传递ID:
console.log(myCollection.pluck('id')); // gives [undefined, undefined, undefined]
为什么我添加到我的收藏中的模型的ID会消失?
答案 0 :(得分:0)
您可以定义globalCounter,其中定义MyModel,但可能在您创建MyModel实例的地方,globalCounter不在您的脚本范围内。
就像在FrontEnd上实现的“自动增量”一样,你可以这样做,我写的是为了防止范围问题(自动增量键将成为“模型定义”的一部分,就像某种静态var):
var MyModel = Backbone.Model.extend({
globalCounter : 0,
initialize: function () {
this.set('id', MyModel.prototype.globalCounter++);
}
});