12

रीढ़ की हड्डी के लिए बिल्कुल नया, इसलिए यह वास्तव में एक बुनियादी सवाल है। मेरे पास एक फ़ंक्शन में बैकबोन संग्रह है और मैं साबित कर सकता हूं कि यह पारित हो गया है और संग्रह में मॉडल आईडी हैं।बैकबोन संग्रह पर लूप के लिए

convertToMapObjects: (results) => 
    objectList = new ObjectList() 
    results.each(result)-> 
    testObj = new TestObject() 
    testObj.set 
     id = result.get("id") 
    objectList.add(testObj) 

और एक और समारोह में (मॉडल बनाने के माध्यम से पहुँचा घटना ट्रिगर) - -

getIds: (objects) => 
ids = (object.id for object in objects) 

मुझे लगता है कि इस मुद्दे की वजह से हो सकता है

यहाँ कैसे मैं आईडी की स्थापना हूँ मैं संग्रह के माध्यम से कैसे पुनरावृत्ति कर रहा हूं क्योंकि जब मैंने

for object in objects 
    console.log(object) 

मैंने दो undefi देखा neds। क्या ये सही है? यदि हां, तो मैं रीढ़ की हड्डी संग्रह के माध्यम से जाने के लिए लूप का उपयोग क्यों नहीं कर सकता? इसके अलावा, क्या ऐसा कोई तरीका है जिससे मैं ऐसा कर सकता हूं?

उत्तर

20

एक बैकबोन संग्रह एक सरणी नहीं है इसलिए for ... in आपके द्वारा अपेक्षित परिणामों का उत्पादन नहीं करेगा। यदि आप एक साधारण लूप का उपयोग करना चाहते हैं तो आप संग्रह की models संपत्ति को देखना चाहते हैं। Backbone.Collection पर 28 पुनरावृत्ति कार्यों प्रदान करने के लिए Underscore.js को

अंडरस्कोर के तरीके (28)

बैकबोन प्रॉक्सी:

हालांकि, रीढ़ संग्रह various Underscore methods mixed in है। वे सब यहाँ प्रलेखित नहीं कर रहे हैं, लेकिन आप पूर्ण विवरण के लिए अंडरस्कोर प्रलेखन पर एक नज़र ले जा सकते हैं ...

  • foreach (प्रत्येक)
  • ...

तो आप कर सकते हैं map या pluck उपयोग करें यदि आप models property तक पहुँचने से बचने के लिए करना चाहते हैं:

ids = objects.map (m) -> m.id 
ids = objects.pluck 'id' 

pluck विधि, कम या ज्यादा, map का एक विशेष मामला है, लेकिन अंडरस्कोर संस्करण का उपयोग करने के बजाय संग्रह मूल संस्करण को लागू करते हैं ताकि वे साधारण ऑब्जेक्ट गुणों के बजाय मॉडल विशेषताओं को हल कर सकें।

+0

इस ठीक जवाब मेरे सवाल में एक मॉडल दे देंगे - धन्यवाद – praks5432

5

आप संग्रह के models property पर लूप करना चाहते हैं, न कि संग्रह ऑब्जेक्ट स्वयं।

4
for object in object.models 

यह आपको संग्रह