2015-08-19 2 views
0

У меня есть четыре компонента, настроенные из той же модели. В зависимости от состояния элемента он будет показан в одном из четырех компонентов.Эмблема повторного рендеринга, когда не в DOM

Компоненты являются: 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); 
    } 
}); 

Кто-нибудь есть какие-либо улики по этому вопросу?

+1

'Ember.run.scheduleOnce ('afterRender', это, updateCreatedAt);' В ваш крюк 'didInsertElement' –

+0

@ Kitler работает как шарм. Спасибо! –

+0

Np, я добавлю его в качестве ответа –

ответ

1

Когда didInsertElement крючок срабатывает шаблон не обязательно делает, вам нужно будет запланировать его с помощью Ember.run.scheduleOnce:

didInsertElement() { 
    Ember.run.scheduleOnce('afterRender', this, updateCreatedAt); 
} 
Смежные вопросы