Ember 不在 DOM 时重新渲染
Ember re-render when not in DOM
我从同一型号设置了四个组件。根据项目的状态,它将显示在四个组件之一中。
组件是:新的、就绪的、开始的、完成的。
在这些组件中的每一个上,我都有一个时间戳,我想不断更新它。但是,每当 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);
}
});
有没有人知道这件事的线索?
当触发 didInsertElement
挂钩时,模板不一定会呈现,您需要使用 Ember.run.scheduleOnce:
安排它
didInsertElement() {
Ember.run.scheduleOnce('afterRender', this, updateCreatedAt);
}
我从同一型号设置了四个组件。根据项目的状态,它将显示在四个组件之一中。
组件是:新的、就绪的、开始的、完成的。
在这些组件中的每一个上,我都有一个时间戳,我想不断更新它。但是,每当 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);
}
});
有没有人知道这件事的线索?
当触发 didInsertElement
挂钩时,模板不一定会呈现,您需要使用 Ember.run.scheduleOnce:
didInsertElement() {
Ember.run.scheduleOnce('afterRender', this, updateCreatedAt);
}