2014-08-27 39 views
2

我試圖與Backbone一起玩,似乎遇到了問題。我的活動正在開火,但集合尚未更新。我已經包括下面的事件回調,但整體例如可以在這裏看到:http://jsfiddle.net/xp27dm7L/7/將模型添加到集合不起作用

addItem: function() { 
    alert(1) 
    var id = this.collection.length; 
    this.collection.add({ 
     "id": "p"+id, 
     "name" : "ghgjhj", 
     "title" : "EsssyyyyEEE", 
     "background" : "ssssFyFFF" 
    }); 
}, 

我到底做錯了什麼?

回答

4

問題是你添加一個帶重複ID的項目。

如果你做到以下幾點,它的工作原理:

this.collection.add({ 
    "id": "p"+Math.random(), // Just an example, of course! 
    "name" : "ghgjhj", 
    "title" : "EsssyyyyEEE", 
    "background" : "ssssFyFFF" 
}); 

理想情況下,你可能不聲明id都讓骨幹搞定:

this.collection.add({ 
    "name" : "ghgjhj", 
    "title" : "EsssyyyyEEE", 
    "background" : "ssssFyFFF" 
}); 

您還可以使用的length您的收藏集以設置新ID:

var id = this.collection.length + 1; 
this.collection.add({ 
    "id": "p" + id, 
    "name" : "ghgjhj", 
    "title" : "EsssyyyyEEE", 
    "background" : "ssssFyFFF" 
}); 
3

它忽略了新項目,因爲它有一個重複的ID。這應該修復它(Fiddle):

var id = this.collection.length + 1; 

Here是從骨幹文檔相關注意事項:

如果要添加的模型有已在集合中的集合,他們將被忽略,除非你通過{merge:true},在這種情況下,他們的屬性將被合併到相應的模型中...

+0

謝謝!我不知道合併選項。 – 2014-09-02 14:13:06

相關問題