2012-08-02 15 views
7

मैं backbone.js में संग्रह संग्रह विधियों को कैसे कर सकता हूं?चेन Backbone.js संग्रह विधि

var Collection = this.collection; 
Collection = Collection.where({county: selected}); 
Collection = Collection.groupBy(function(city) { 
    return city.get('city') 
}); 
Collection.each(function(city) { 
    // each items 
}); 

मैं कुछ इस तरह की कोशिश की है, लेकिन यह गलत है:

Object[object Object],[object Object],[object Object] has no method 'groupBy' 

उत्तर

14

आप Backbone.Collection तरीकों का उपयोग नहीं कर सकते हैं कि जिस तरह से (आशा है कि मैं गलत नहीं कर रहा हूँ), लेकिन जैसा कि आप शायद बैकबोन तरीकों में से सबसे ज्यादा जानते हैं Underscore.js आधारित विधियों तो मतलब है कि अगर आप where विधि आप इसे इस्तेमाल करता है Underscore.js filter विधि देखेंगे के लिए स्रोत कोड को देखो, तो यह आप प्राप्त कर सकते हैं कि आप क्या चाहते हैं ऐसा करने का अर्थ है:

var filteredResults = this.collection.chain() 
    .filter(function(model) { return model.get('county') == yourCounty; }) 
    .groupBy(function(model) { return model.get('city') }) 
    .each(function(model) { console.log(model); }) 
    .value(); 

.value() यहां आपके लिए कोई उपयोग नहीं है, तो आप प्रत्येक मॉडल के लिए .each विधि के अंदर "सामान" बना रहे हैं, लेकिन यदि आप कहना चाहते हैं कि फ़िल्टर किए गए शहरों की एक सरणी वापस करें तो आप .map और साथ में कर सकते हैं filteredResults आपके परिणाम

var filteredResults = this.collection.chain() 
    .filter(function(model) { return model.get('county') == yourCounty; }) 
    .map(function(model) { return model.get('city'); }) 
    .value(); 
console.log(filteredResults); 
संबंधित मुद्दे