2015-04-07 200 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'), 

[...]