Обновление элемента ember-moment при перезагрузке маршрута в Ember? - PullRequest
0 голосов
/ 18 октября 2018

У меня есть приложение 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 не изменился и не обновляет элемент, содержащий относительное время, даже если изменилось текущее время (и, следовательно, относительное время).

Что является правильнымподход для обеспечения того, чтобы относительное время обновлялось при перезагрузке маршрута?

...