我有一个使用ember-moment的Ember应用。
应用程序为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}}
所有这些均按预期工作。但是,我想每30秒重新加载一次路线。
因此,我将路线扩展如下:
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返回的数据更改时,状态将更新。但是,模板中显示的相对时间不会更改。我假设Ember看到lastPoll
并没有改变,并且即使当前时间已经改变(因此也改变了相对时间),也没有更新包含相对时间的元素。
在重新加载路线时确保相对时间更新的正确方法是什么?