1

我正在Ember.CollectionView与一大群孩子一起工作。在所有孩子都呈现后,我需要执行一些由 jQuery 插件处理的样式化 javascript。我的第一次尝试是利用didInsertElement我熟悉和喜爱的钩子,但对于我的目的来说,这个钩子似乎为时过早。

根据这里的文档,这个钩子在

当视图的元素已插入 DOM 时调用。覆盖此函数以执行任何需要文档正文中的元素的设置。

因此,也许,我对 Ember 的渲染方式存在误解,但从中可以看出我的方法应该有效。

我遇到错误了吗?这是我误解的正确功能吗?除了使用带有回调的签入样式系统以在每个子视图已触发时提醒我之外,还有其他规范的解决方法didInsertElement吗?

编辑作为记录,使用签到系统确实有效。每次父母didInsertElement解雇时,我都会计算哪些子视图签入,但我想知道是否有更好的方法。

4

1 回答 1

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
    });
  }
})
于 2013-03-06T08:27:06.737 回答