У меня есть приложение Ember, которое использует ember-moment .
Приложение определяет модель для site
объектов:
import DS from 'ember-data';
export default DS.Model.extend({
lastPoll: DS.attr('date'),
status: DS.attr('string')
});
index
Маршрут загружает сайт # 1 при активации:
import Route from '@ember/routing/route';
export default Route.extend({
model(params) {
return this.store.findRecord('site', 1);
}
});
Шаблон для этого маршрута довольно прост:
{{moment-from-now model.lastPoll}}: {{model.status}}
Все это работает как задумано.Однако я хотел бы перезагружать маршрут каждые тридцать секунд.
Таким образом, я расширил маршрут следующим образом:
import Route from '@ember/routing/route';
export default Route.extend({
model(params) {
return this.store.findRecord('site', 1);
},
afterModel() {
this.set('_timer',
Ember.run.later(this, () => {
this.refresh();
}, 30 * 1000)
);
},
deactivate() {
Ember.run.cancel(this.get('_timer'));
}
});
Состояние обновляется при изменении данных, возвращаемых API.Однако относительное время, отображаемое в шаблоне, не изменяется.Я предполагаю, что Эмбер видит, что lastPoll
не изменился и не обновляет элемент, содержащий относительное время, даже если изменилось текущее время (и, следовательно, относительное время).
Что является правильнымподход для обеспечения того, чтобы относительное время обновлялось при перезагрузке маршрута?