2012-10-17 17 views
5

मुझे प्रत्येक आइटम को क्रम में हटाने, संग्रह को खाली करने की आवश्यकता है।backbone.js एक संग्रह खाली

this.nodes.each(function(node){ 
    this.nodes.remove(node); 
}, this); 

काम नहीं करता है, क्योंकि प्रत्येक नोड को हटा दिया जाता है क्योंकि यह संग्रह की लंबाई बदलता है। एक अस्थायी सरणी बनाना और फिर उस काम पर पुनरावृत्ति करना। क्या कोई बेहतर तरीका है?

उत्तर

4

this.nodes.reset() आज़माएं जब तक कि आपको remove ईवेंट की आवश्यकता न हो।

अन्यथा:

var nodes = this.nodes; 
while (nodes.length > 0) 
    nodes.remove(nodes.at(0)); 
+0

हाँ, मुझे प्रत्येक नोड पर निकालने की घटना की आवश्यकता है, क्योंकि यह अन्य सामान को साफ़ कर रहा है। – forresto

+1

@forresto, –

1

आप जबकि पुनरावृत्ति संग्रह संशोधित करने के लिए है, तो यह एक सरल पिछड़े for उस तरह का उपयोग करते हैं की जरूरत है:

var count = collection.size(); 
for (var i = count-1; i > -1; i--) { 
    collection.remove(collection.at(i)); 
} 

फिडल http://jsfiddle.net/xt635/

+0

अपडेट किया गया यह रिवर्स ऑर्डर को हटाने पर काम करता है ठीक है। – forresto

2

एक और तरीका है करने के लिए पर रीढ़ की हड्डी संग्रह के खाली:

while (this.catz.length > 0) this.catz.pop(); 
1

http://backbonejs.org/#Collection-reset

आप collection.reset कॉल कर सकते हैं(); और यह पूरे संग्रह को खाली कर देगा। मैंने आज इसका इस्तेमाल किया!

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