2013-03-09 9 views
8

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

var search = this.controllerFor('employees').search; //can be name, email or age 

employees = this.get('currentModel').filterProperty('name', search); 

उपरोक्त मास्टर सूची को अपडेट करने के लिए ठीक काम करता है लेकिन मैं एक समय में केवल एक संपत्ति द्वारा फ़िल्टर करने में सक्षम हूं।

//Sample Model 
App.Employee = DS.Model.extend({ 
    email: DS.attr('string'), 
    name: DS.attr('string'), 
    age: DS.attr('number'), 
}) 

एक विचार को फिर से फिल्टर करने के लिए फिर से फिल्टर परिणाम देख सकते length = 0 और कुछ कैसे परिणाम मर्ज है। हालांकि, मैं उस विचार पर बड़ा नहीं हूं और मानता हूं कि एम्बर के पास इसे प्राप्त करने का एक बेहतर और अधिक शानदार तरीका हो सकता है।

उत्तर

8

आप अपने मॉडल में एक से अधिक संपत्ति फ़िल्टर करने के लिए filter फ़ंक्शन का उपयोग कर सकते हैं और यहां तक ​​कि नियंत्रक से अन्य गुणों का भी उपयोग कर सकते हैं। उदाहरण के लिए:

App.Person = DS.Model.extend({ 
    firstName: DS.attr('string'), 
    lastName: DS.attr('string'), 
    fullName: function() { 
     return '%@ %@'.fmt(
      this.get('firstName'), 
      this.get('lastName') 
     ); 
    }.property('firstName', 'lastName') 
}); 

कई संपत्तियां द्वारा फिल्टर करने के लिए, मान लीजिए कि आप एक खोज समारोह इस के लिए समान के साथ एक नियंत्रक डालते हैं:

... 
performSearch: function(searchTerm) { 
    return this.get('content').filter(function(person) { 
     return person.get('firstName').indexOf(searchTerm) !== -1 || 
       person.get('lastName').indexOf(searchTerm) !== -1; 
    }); 
}, 
... 

यह

इस तरह एक मॉडल की कल्पना content में संपर्कों की सूची के माध्यम से फिर से शुरू होगा और फ़िल्टर के अनुरूप केवल मॉडल ऑब्जेक्ट्स लौटने पर एक या अधिक फ़िल्टर लागू करें।

फिडल: http://jsfiddle.net/schawaska/ABJN7/

+0

मैं सिर्फ 'फिल्टर (एफ एन)' याद आ रही थी। अच्छा एक MWJ। – KALBB

+0

मुझे यह नहीं पता था, लेकिन 'निरीक्षण' ('firstName', 'lastName') 'काम भी करता है। – rxgx

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