2015-04-07 106 views
0

我有一個cruise模型,其中有許多trips。 A trip存儲開始日期和結束日期。我想過濾cruises,這些文件起始於或晚於earliestStartDate,最後是latestEndDate在日期範圍內篩選

應用程序/模型/ cruise.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    name: DS.attr('string'), 
    trips: DS.hasMany('trip', { async: true }) 
}); 

應用程序/模型/ trip.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    starts_on: DS.attr('date'), 
    ends_on: DS.attr('date') 
}); 

應用/模板/ index.hbs

{{date-picker date=earliestStartDate valueFormat='YYYY-MM-DD'} 
{{date-picker date=latestEndDate valueFormat='YYYY-MM-DD'}} 

如何在此控制器中更改filteredCruises以過濾在給定日期內出行的cruises

的app/controllers/index.js

[...] 

filteredCruises: function() { 
    var earliestStartDate = this.get('earliestStartDate'); 
    var latestEndDate = this.get('latestEndDate'); 
    var cruises = this.get('model.cruises'); 

    return cruises; 
}.property('model.cruises','earliestStartDate','latestEndDate'), 

[...] 

回答

0

我沒碰過灰燼中一段時間​​,我沒有測試/執行該代碼,但我認爲可能會爲工作你(我確信這可以優化):

[...] 

filteredCruises: function() { 
    var earliestStartDate = this.get('earliestStartDate'); 
    var latestEndDate = this.get('latestEndDate'); 
    var cruises = this.get('model.cruises'); 

    return cruises.filter(function(cruise) { 
     return cruise.get('trips').filter(function(trip) { 
      return ((trip.get('starts_on') >= earliestStartDate) && (trip.get('ends_on') <= latestEndDate)); 
     }); 
    }); 

}.property('model.cruises','earliestStartDate','latestEndDate'), 

[...]