2013-02-14 106 views
0

以下是我的JSON:取骨幹收集問題id爲

[ 
{ 
    "id" : "1", 
    "type" : "report" 
}, 
{ 
    "id" : "2", 
    "type" : "report" 
}, 
{ 
    "id" : "1", 
    "type" : "email" 
}, 
] 

考慮,JSON是從骨幹網收集回來 - >服務呼叫。 現在,當我使用json響應呈現我的html表格使用骨幹視圖和句柄模板系統。 顯示2行,而應該有3行。

注意: 集合分析響應正在返回正確的json(即3行)。 當我使用具有唯一隨機生成號碼的集合解析覆蓋id時,所有3行都顯示出來。 這不好,因爲我不想更改id

我要顯示的行如下:

1 reports 
2 reports 
1 email 
+0

嘗試改變idAttribute [提示這裏:骨幹API(http://backbonejs.org/#Model-idAttribute) – marbor3 2013-02-14 11:18:18

回答

2

Collection add文檔,

注意添加相同的模型(具有相同ID的模型)的 不止一次收集是沒有任何操作的。

雖然我看不出爲什麼兩個不同的對象應該有相同的id的原因,你可能有一個合理的理由。一個建議是爲json響應中的每個對象添加另一個屬性,_dummyId並將其設置爲服務器端的自動增量值。在客戶端,在您的模型定義代碼中,然後將idAttribute設置爲_dummyId

JSON響應,

[ 
{ 
    "id" : "1", 
    "_dummyId": "1", 
    "type" : "report" 
}, 
{ 
    "id" : "2", 
    "_dummyId": "2", 
    "type" : "report" 
}, 
{ 
    "id" : "1", 
    "_dummyId": "3", 
    "type" : "email" 
}, 
] 

你的模型定義,from http://backbonejs.org/#Model-idAttribute

var Meal = Backbone.Model.extend({ 
    idAttribute: "_dummyId" 
}); 

這就是說,我希望有骨幹優雅的環境,這是令骨幹集合行爲清單而不是一套。

+0

由於它的工作。 .. – 2013-02-14 14:32:03

1

如果您想解決這個問題,您必須爲每個添加到集合的模型設置新的唯一ID。如果您需要原始ID

initialize: function() { 
     this.set("id", this.generateID()); 
}, 
generateID = function() { 
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { 
     var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); 
     return v.toString(16); 
    }); 
} 

,你需要前將其保存,並創建新的後,您將原來在另一個模型屬性: 試試這個方法。 骨幹不理我,當我做@ amith喬治·溶液凝固idAttribute另一個dummyId