【发布时间】:2015-05-14 16:34:58
【问题描述】:
我想知道所有内容第一次渲染的时间,但Ember.run.scheduleOnce('afterRender' 还不够,因为模板中有承诺。
{{#each entity in model.entities}}
{{entity.anotherEntity.name}}
{{/each}}
{{!-- more like above --}}
entities 和 anotherEntities 是异步关系和承诺。 afterRender 在该内部内容呈现之前命中。我目前的解决方案是:
Ember.run.scheduleOnce('afterRender', this, function() {
Ember.RSVP.all([
this.model.get('entities').then(function(entities) {
return Ember.RSVP.all(entities.map(function(entity) {
return entity.get('anotherEntity');
}));
}),
// more like above
]).then(function() {
console.log('done-rendering');
});
});
有没有更好的方法呢?这甚至可能还不够,因为在最后一个 Promise 解析和模板呈现的最后一部分之间可能存在一瞬间。也许我需要另一个afterRender 或类似的检查,在所有的承诺都确定之后。
【问题讨论】:
标签: javascript ember.js handlebars.js promise htmlbars