2014-05-01 28 views
6

In Ember ist es einfach, ein Array zu filtern, in dem Sie nach übereinstimmenden Werten suchen (Nur Name == "John) Was ich nicht herausfinden kann ist, wie man mit größer als oder kleiner als filtert . (Return alle Objekte, deren Startdate vor heuteFiltern nach Datumsbereich

In meiner app ich habe eine Sammlung von Leistungen ich möchte diese Leistungen in drei Kategorien einzuteilen: fällig innerhalb von zehn Tagen überfällig, und dann den Rest

. Ich habe das folgende Beispiel in einem anderen SO-Beitrag gefunden, kann aber nicht herausfinden, wie ich es verwenden kann, um mein Ziel zu erreichen.

filterComputed: function() { 
    return this.get('content').filter(function(item, index, enumerable){ 
    return item.firstName == 'Luke'; 
    }); 
}.property('[email protected]') 
+0

gibt es eine Reihe von Optionen zur Auswahl, hier gehen: http://emberjs.com/api/#method_computed_filter gibt, werden Sie finden ‚Filter‘, ‚filterBy‘ , 'gt' (größer), 'gte' und vieles mehr. – fanta

Antwort

4

Sie können einfach tun:

this.get('content').filter(function(item){ 
    if(item.get('someProperty') > someVar) { 
     return true; 
    } 
}); 
0

Dies sollte ein Array von Objekten in Ihrem definierten Datumsbereich zurückzukehren. Sollte in Ember^2.x funktionieren.

filterComputed: computed('[email protected]', 'startDate', 'endDate', function() { 
 
    return this.get('content').filter(function(item) { 
 
    var contentDate = item.get('date'); // expecting item to have a date property 
 
    return contentDate > this.get('startDate') && bookingDate < this.get('endDate'); 
 
    }); 
 
})

Mit ES6 könnte man sogar so etwas tun:

filterComputed: computed('[email protected]', 'startDate', 'endDate', function() { 
 
    return this.get('content').filter(item => item.get('date') > this.get('startDate') && item.get('date') < this.get('endDate')); 
 
})

Wenn Sie eine einfachere Anforderung haben, computed.filterBy() vielleicht das Richtige für Sie. https://emberjs.com/api/classes/Ember.computed.html#method_filterBy

Ebenfalls hilfreich: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter