2012-07-06 15 views
12

जोड़ रहा है प्रश्न में संग्रह मित्रों के एक समूह पकड़ लेता है, और फिर इसे reset का उपयोग करता है सभी नए दोस्त को बचाने के लिए। मेरी समस्या यह है कि यह संग्रह में केवल 1 दोस्त जोड़ता है।क्यों मेरी backbone.js संग्रह रीसेट केवल 1 मॉडल

मैंने console.log पर cModels पर किया था और यह ऐरे में 300 से अधिक वस्तुओं को दिखा रहा था, इसलिए मुझे पता है कि केवल 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 (मॉडल)) है; '। आप यह देखने के लिए कि मॉडल का पूरा सेट उस बिंदु पर बना रहा है या नहीं, इससे पहले कि आप 'डीबगर' या 'console.log (this.models, मॉडल, अनुक्रमणिका)' लाइन को जोड़ने का प्रयास करना चाहें। – machineghost

उत्तर

28

ऐसा इसलिए है क्योंकि मॉडल में एक ही आईडी है।

एक रीढ़ संग्रह डुप्लीकेट आईडी मूल्यों के साथ मॉडल की अनुमति नहीं है। (देखें इस commit)

+0

अगर ऐसी बात थे, हालांकि ओपी एक त्रुटि हो रही किया जाना चाहिए "दो बार एक संग्रह करने के लिए एक ही मॉडल जोड़ा नहीं जा सकता" – machineghost

+0

वह सही था - मैं 'जोड़ा आईडी:' set' भीतर key', और यह तय हो गई। – xil3

+1

@machineghost प्रतिबद्ध मुझे लगता है कि त्रुटि – Paul

संबंधित मुद्दे