簡體   English   中英

Ember.js:如何在呈現每個子視圖后掛鈎Ember.CollectionView?

[英]Ember.js: How do I hook Ember.CollectionView after every child view is rendered?

這個問題表明,覆蓋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幫助器進行渲染。 簡單地在推送對象之后觸發視圖訂閱的控制器上的事件導致動畫在實際呈現內容的更改之前執行。 以下技術對我來說非常合適。

//excerpt from my loadMore method on the ArrayController

var self = this;
self.content.pushObjects(moreItems);
Ember.run.scheduleOnce('afterRender', this, function()
{
  self.trigger('loadMoreComplete');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM