2015-04-07 5 views
0

У меня есть модель cruise которая hasMany 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, которые имеют поездки в течение заданных дат?

приложение/контроллеры/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

Я не трогали 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'), 

[...] 
Смежные вопросы