为什么模型ID没有保留在集合中?

时间:2012-09-24 22:41:34

标签: 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.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会消失?

1 个答案:

答案 0 :(得分:0)

您可以定义globalCounter,其中定义MyModel,但可能在您创建MyModel实例的地方,globalCounter不在您的脚本范围内。

就像在FrontEnd上实现的“自动增量”一样,你可以这样做,我写的是为了防止范围问题(自动增量键将成为“模型定义”的一部分,就像某种静态var):

var MyModel = Backbone.Model.extend({
    globalCounter : 0,
    initialize: function () {
        this.set('id', MyModel.prototype.globalCounter++);
    }
});