我正在使用包含大量子项的扩展Ember.CollectionView
。在所有孩子都渲染完之后,我需要执行一些由jQuery插件处理的样式javascript。我对此的第一次尝试是利用我所知道和喜爱的didInsertElement
钩子,但看起来这个钩子对我的目的来说太早了。
根据文档here,当
时会触发此挂钩将视图元素插入DOM时调用。重写此函数以执行需要文档正文中的元素的任何设置。
或许,我对Ember如何呈现产生了误解,但是从中可以看出我的方法应该有效。
我遇到了一个错误吗?这是我误解的正确功能吗?除了使用带有回调的签入样式系统以在每个子视图都被触发didInsertElement
时提醒我时,是否有规范的解决方法?
编辑对于记录,使用签入系统确实有效。每当父didInsertElement
被解雇时,我会统计哪些孩子观看签到,但我想知道是否有更好的方法。
答案 0 :(得分:4)
从技术上讲,CollectionView是在它的子节点之前插入的,所以是的,这是正确的功能。
要向CollectionView添加回调,以便在渲染所有子项时,您需要使用afterRender
队列。
App.ContainerView = Ember.ContainerView.extend({
didInsertElement: function() {
Ember.run.scheduleOnce('afterRender', this, function(){
// this will be performed after every child has been rendered
});
}
})