2014-12-28 58 views
1

我希望能夠知道何時所有視圖都在佈局中呈現。我想這樣做的原因是因爲我需要能夠在佈局中引用渲染視圖的位置,以便相對於已渲染的其他視圖創建視圖。什麼是知道什麼時候所有表面最初都是在famo.us中渲染的好方法?

我已閱讀本: 我能想到的Surface render events in famo.us

的一種方法是計算已被渲染,所有已經呈現後(根據已知的數)的意見,然後我就可以承擔所有已渲染。顯然,如果渲染的視圖數量未知,這將不起作用。

所以實現此目的的另一種方法是讓佈局在所有託管表面都完成渲染時觸發自定義事件。看起來這是一個很好的地方,可以在給定的佈局中使用功能墊片。例如,在SequentialLayout這將是SequentialLayout.prototype.commit。但是,我不能100%確定這是否是正確的方法,因爲它看起來像EngineEntity管理着色。所以,對我而言,這種方法實際上並不會激發我想在正確的時間開火的事件。

有沒有這方面的最佳做法?

回答

0

在你的使用情況,最好的辦法可能是監聽在每個視圖

surface.on('deploy', function() {...}); 

和每個表面(渲染)的部署,一旦所有的表面已經部署發出自定義事件的看法

thisView._eventOutput.emit('completed-deploy', {data: someData}); 

然後你可以聽每個視圖知道什麼時候renderables部署

view.on('completed-deploy', function(data) {....}); 

儘管這確實處理了可渲染部署到DOM的事實,但它不會讓您知道它是否與修改器的任何轉換完成。在這種情況下,當視圖中的轉換完成時,您還需要具有標記功能,如果這是您需要的。

+0

看起來佈局應該能夠發出一個事件,通知任何監聽器它的所有表面都已被部署。思考?你怎麼看shimming SequentialLayout.prototype.sequenceFrom? – zealoushacker

+0

或者,更好的是從'SequentialLayout.prototype.commit'觸發'completed-deploy'事件? – zealoushacker

+0

另外,'SequentialLayout'沒有定義'_eventOutput',也沒有它的託管'_items'' ViewSequence'。 – zealoushacker

相關問題