2012-09-24 46 views
1

我設置的ID我的模型如下:爲什麼模型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

此代碼適用於我; http://jsbin.com/ojonoh/1/'// [0,1,2]' – Matt

回答

0

您定義了globalCounter,其中定義了MyModel,但可能在您創建MyModel的實例的位置globalCounter不在您的腳本範圍內。

它就像是在FrontEnd上實現的「自動增量」,你可以這樣寫我,以防止範圍問題(自動增量鍵將成爲某種靜態變量的「模型定義」的一部分):

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