2015-12-28 148 views
0

我正在研究使用Backbone牽線木偶的應用程序。我有一個包含區域的佈局,這些區域又包含子區域。在父區域的onRender函數中,通過調用「showChildView」函數呈現子區域。我想在呈現子區域之後設置選項卡索引。有沒有辦法知道我的孩子地區是否被渲染?如何知道子區域是否呈現在區域

我試着用昂秀/ onAttach對親區域的觀點。但沒有運氣!

+0

只是從子視圖的渲染方法觸發自定義事件..? –

+0

謝謝!但是我有多個子視圖,我需要一種方法來處理所有這些視圖中的事件 – user2210060

+0

您可以從所有視圖中觸發相同的事件並讓父視圖偵聽所有這些視圖......?! –

回答

0

來檢查區域「myRegion」目前呈現出一個觀點嘗試

var childView = parentView.getRegion('myRegion').currentView; 

,那麼你可以檢查視圖已經被渲染

if (childView && childView.isRendered) { ... 

在你的情況下,呼叫後「showChildView」你的孩子的意見應呈現,不是嗎?

+0

謝謝!但我的子視圖呈現異步。我什麼時候檢查它們是否被渲染。如果我選擇進行此項檢查,我需要確定它們已被渲染,並且我沒有辦法做到這一點,除非某些事件是從子視圖觸發的。但我有多個子視圖,我需要一種方法來處理異步渲染的所有事件 – user2210060

+1

您可以使用_attach_事件爲每個子視圖添加一個偵聽器:'_.each([... child views。 ..],function(view){this.listenToOnce(view,'attach',function(){/ *增加計數器並在計數器到達子視圖數時執行某些操作* /});},this)'。使用JS6,您還可以使用承諾爲每個視圖渲染方法創建承諾,然後從[Promise.all](http://www.ecma-international.org/ecma-262/6.0/#sec-promise.all)中調用父母。 –

0

在Chrome瀏覽器開發工具,你可以檢查,如果該地區的DOM元素顯示在源代碼了。如果是,那麼你的區域被渲染。

或者,您還可以通過在子視圖中添加一個onRender()方法並在其中添加一個console.log()語句來進行調試。