2012-07-06 31 views
12

有問題的集合抓住一堆朋友,然後它使用reset保存所有新朋友。我遇到的問題是,它只爲該集合添加了1個朋友。爲什麼我的backbone.js集合重置僅添加1個模型

我在cModels上做了一個console.log,它在數組中顯示了超過300個對象,所以我知道不僅有1個。復位只會加1的任何原因?

下面是我收集:

FriendsCollection = Backbone.Collection.extend({ 
    model: UserModel, 

    getFriends: function() { 
     $.post(baseUrl + dataFriendsUrl, $.proxy(function(data) { 
      var friends = $.parseJSON(data); 
      var cModels = []; 

      for(var key in friends.data) {     
       var user = new UserModel(); 
       user.set({ 
        fbid: friends.data[key].id, 
        username: friends.data[key].name 
       }); 

       cModels.push(user); 
      } 

      this.reset(cModels); 

      console.log(this); 

     }, this)); 
    } 
}); 

,這些模型看起來很好,與開發工具檢查他們之後。

+0

骨幹的collection.reset只是重置集合,然後調用collection.add傳遞給它的任何東西。當你遇到問題時添加相當不錯,所以我很驚訝你沒有看到任何問題。添加的實際行是'splice.apply(this.models,[index,0] .concat(models));'。您可能想嘗試在它之前添加一個'debugger'或'console.log(this.models,models,index)'行,以查看您的整套模型是否正在實現這一點。 – machineghost 2012-07-06 21:20:09

回答

28

這可能是因爲模型具有相同的ID。

Backbone集合不允許具有重複的id值的模型。 (看到這個commit

+0

如果是這種情況,雖然OP應該會出現錯誤「無法將兩次相同的模型添加到集合中」 – machineghost 2012-07-06 21:16:59

+0

他是對的 - 我在'set'中添加了'id:key',並修復了它。 – xil3 2012-07-06 21:25:14

+1

@machineghost我參考的提交刪除提出該錯誤 – Paul 2012-07-06 21:40:02

相關問題