2013-06-10 5 views
6

लक्ष्य: मैं अपने संग्रह के माध्यम से केस असंवेदनशील खोज बनाने की कोशिश कर रहा हूं और मॉडल के नाम विशेषता के विरुद्ध उपयोगकर्ता क्वेरी से मेल खाने का प्रयास करता हूं। अभी अगर मैं एक विशिष्ट मॉडल खोजना चाहता हूं, तो खोज क्वेरी सटीक होना चाहिए।मानचित्र बैकबोन संग्रह के साथ कैसे काम करता है?

ऐसा लगता है कि बॉक्स के बाहर नहीं, बैकबोन में इतना आसान करने का कोई आसान तरीका नहीं है। फ़ंक्शन map दिमाग में आया। क्या होगा यदि मैं पूरे संग्रह के माध्यम से जा सकता हूं और मॉडल के नाम विशेषता को कम मामले में बदल सकता हूं, तो उपयोगकर्ता क्वेरी को कम केस और वॉयला में बदलें!

लेकिन समस्या यह है कि मुझे नहीं पता कि बैकबोन संग्रह और map फ़ंक्शन का उपयोग कैसे करें। बैकबोन डॉक्स में map पर कोई दस्तावेज़ नहीं है, एक लिंक के अलावा, जो आपको तीन संख्याओं की सरणी का उपयोग करके एक सुपर आदिम उदाहरण कोड के साथ अंडरस्कोर दस्तावेज़ों की ओर ले जाता है।

यह काम नहीं करता है ... क्यों?

this.collection.map(function(model) { 
    return model.get('name').toLowerCase(); 
}); 

उत्तर

8

असल में, अंडरस्कोर के सभी संग्रह विधियों को बैकबोन पर चयन किया जाता है। चयन ऑब्जेक्ट्स। जब आप collection.map(... करते हैं तो यह मैप किए गए फ़ंक्शन द्वारा लौटाई गई वस्तुओं की एक सरणी देता है। Raina77ow द्वारा प्रस्तुत समाधान बैकबोन के बाद से काम नहीं करता है। चयन एक सरणी नहीं है और मानचित्र का परिणाम this.collection पर संग्रहीत करने से संग्रह को नष्ट कर दिया जाएगा।

यदि आप संग्रह को फ़िल्टर करना चाहते हैं, तो मैं filter विधि का उपयोग करने की अनुशंसा करता हूं। ।

var filter = this.$('#search-field').val(), 
    filteredModels = this.collection.filter(function(model) { 
    return model.get('name').toLowerCase() === filter; 
}; 
this.collection.reset(filteredModels); 

ध्यान दें कि संग्रह पर अंडरस्कोर के प्रॉक्सी से किसी भी विधि मॉडल की एक सरणी वापस आ जाएगी आप फिर उन्हें का उपयोग करना चाहते हैं, तो आप इन मॉडलों के साथ संग्रह रीसेट कर सकते हैं या: (मैं तुम्हें एक Backbone.View से काम कर रहे हैं मान , समतुल्य रूप से, फ़िल्टर किए गए परिणामों में संग्रह के मॉडल विशेषता सेट करें: this.collection.models = filteredModels। पहले फॉर्म में संग्रह पर reset ईवेंट ट्रिगर करने का लाभ होता है, जिसके लिए आप सुन सकते हैं और उदाहरण के लिए, अपना दृश्य दोबारा प्रस्तुत करें।

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