Javascript 为什么模型ID不保留在集合中?
我将ID设置为我的模型,如下所示:Javascript 为什么模型ID不保留在集合中?,javascript,backbone.js,Javascript,Backbone.js,我将ID设置为我的模型,如下所示: var globalCounter = 0; var MyModel = Backbone.Model.extend({ initialize: function () { this.set('id', globalCounter); globalCounter += 1; } }); 现在,我将MyModel的一组实例添加到集合中: var i, model; MyCollection = Backbone.
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消失了?您在定义MyModel的地方定义了globalCounter,但创建MyModel globalCounter实例的地方可能不在脚本的范围内 这就像是在前端实现的“自动增量”,您可以这样做,正如我写给您的那样,以防止范围问题(自动增量键将是“模型定义”的一部分,类似于某种静态变量): 这个代码对我有用<代码>/[0,1,2]
console.log(myCollection.pluck('id')); // gives [undefined, undefined, undefined]
var MyModel = Backbone.Model.extend({
globalCounter : 0,
initialize: function () {
this.set('id', MyModel.prototype.globalCounter++);
}
});