在日期范围内过滤

时间:2015-04-07 14:46:12

标签: ember.js ember-data

我有一个cruise模型,其中包含多个tripstrip存储开始日期和结束日期。我想过滤cruises,其中earliestStartDate开始于latestEndDate或晚于import DS from 'ember-data'; export default DS.Model.extend({ name: DS.attr('string'), trips: DS.hasMany('trip', { async: true }) }); ,最后是import DS from 'ember-data'; export default DS.Model.extend({ starts_on: DS.attr('date'), ends_on: DS.attr('date') });

应用/模型/ cruise.js

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

应用/模型/ trip.js

filteredCruises

应用/模板/ index.hbs

cruises

如何更改此控制器中的[...] 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'), [...] 以过滤在指定日期内有旅行的{{1}}?

应用/控制器/ index.js

{{1}}

1 个答案:

答案 0 :(得分:0)

我有一段时间没有触及过Ember,我还没有测试/执行过这段代码,但我认为这可能对你有用(我相信这可以优化):

[...]

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'),

[...]