0

我有来自同一模型的四个组件设置。根据项目的状态,它将显示在四个组件之一中。

组件是:is-new、is-ready、is-started、is-completed。

在每个组件上,我都有一个时间戳,我想不断更新。然而,每当模型的 DOM 或状态更新时,Ember 就会出现以下错误。

Something you did caused a view to re-render after it rendered but before it was inserted into the DOM.

这是其中一个组件的示例:

import Ember from 'ember';

export default Ember.Component.extend({
  tagName: 'article',

  click: function() {
    this.attrs.action();
  },

  didInsertElement: function() {
    this.updateCreatedAt();
  },

  updateCreatedAt: function() {
    console.log(this.isDestroying, this.isDestroyed);
    if (this.isVisible && !this.isDestroying && !this.isDestroyed) {
      this.rerender();
    }
    Ember.run.later(this, 'updateCreatedAt', 60000);
  }
});

有人对此事有任何线索吗?

4

1 回答 1

1

didInsertElement钩子被触发时,模板不一定会呈现,您需要使用Ember.run.scheduleOnce来安排它:

didInsertElement() {
  Ember.run.scheduleOnce('afterRender', this, updateCreatedAt);
}
于 2015-08-19T13:42:48.107 回答