Ember.js:如何在每个子视图呈现后钩住Ember.CollectionView?

这个问题演示了覆盖Ember.View实例的didInsertElement允许您在视图的元素位于DOM中之后执行一些代码。

http://jsfiddle.net/gvUux/2/

当然,在添加到didInsertElement的子视图类上重写didInsertElement将在每个子视图被渲染和插入后运行钩子。

http://jsfiddle.net/BFUvK/1/

Ember.CollectionView, arrayDidChangecontentDidChange上的两个面向集合的钩子在底层内容发生变化之后执行,但在任何渲染发生之前执行。 arrayDidChange是为添加到数组的每个元素执行的, contentDidChange包装内容绑定。

我希望能够钩住渲染管道,比如willInsertCollectiondidInsertCollection ,以在所有子元素被渲染之前和之后操纵DOM - 实质上,在contentBinding周围的过滤器之前和之后。

有任何想法吗? 我很难过。


如果您希望在渲染视图之前和/或之后执行某些willInsertElementdidInsertElement分别使用willInsertElement和/或didInsertElement 。 在这种情况下,因为您希望“在渲染所有子元素之前和之后操作DOM”,您应该在CollectionView上调用这些元素。

我不太清楚你的意思是“在contentBinding周围的过滤器之前和之后”,所以如果这不能回答你的问题,如果你能澄清我很乐意提供帮助。

jsFiddle如果需要的话


我想应用滚动动画来在推送新对象后向上滑动列表。 该列表使用ArrayController和#each helper呈现。 在实际渲染内容更改之前,简单地触发推送对象后视图订阅的控制器上的事件导致动画执行。 以下技术对我来说非常合适。

//excerpt from my loadMore method on the ArrayController

var self = this;
self.content.pushObjects(moreItems);
Ember.run.scheduleOnce('afterRender', this, function()
{
  self.trigger('loadMoreComplete');
});
链接地址: http://www.djcxy.com/p/10447.html

上一篇: Ember.js: How do I hook Ember.CollectionView after every child view is rendered?

下一篇: Upgrade SQL Server 2008 to 2008 R2