我有一个cruise
模型,其中包含多个trips
。 trip
存储开始日期和结束日期。我想过滤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}}
答案 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'),
[...]