在Ember中重新加载路线时更新ember-moment元素?

时间:2018-10-18 04:21:41

标签: javascript ember.js momentjs

我有一个使用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并没有改变,并且即使当前时间已经改变(因此也改变了相对时间),也没有更新包含相对时间的元素。

在重新加载路线时确保相对时间更新的正确方法是什么?

0 个答案:

没有答案