Ember.js:如何在每个子视图呈现后钩住Ember.CollectionView?
这个问题演示了覆盖Ember.View实例的didInsertElement
允许您在视图的元素位于DOM中之后执行一些代码。
http://jsfiddle.net/gvUux/2/
当然,在添加到didInsertElement
的子视图类上重写didInsertElement
将在每个子视图被渲染和插入后运行钩子。
http://jsfiddle.net/BFUvK/1/
Ember.CollectionView, arrayDidChange
和contentDidChange
上的两个面向集合的钩子在底层内容发生变化之后执行,但在任何渲染发生之前执行。 arrayDidChange
是为添加到数组的每个元素执行的, contentDidChange
包装内容绑定。
我希望能够钩住渲染管道,比如willInsertCollection
和didInsertCollection
,以在所有子元素被渲染之前和之后操纵DOM - 实质上,在contentBinding
周围的过滤器之前和之后。
有任何想法吗? 我很难过。
如果您希望在渲染视图之前和/或之后执行某些willInsertElement
, didInsertElement
分别使用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?