1

我将 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 会消失?

4

1 回答 1

0

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

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

var MyModel = Backbone.Model.extend({
    globalCounter : 0,
    initialize: function () {
        this.set('id', MyModel.prototype.globalCounter++);
    }
});
于 2012-09-26T14:56:53.177 回答