2012-02-16 99 views
17

我一直在尋找一段時間,我很有信心,這是一個新問題,而不是像標題所示的重複。 :)KnockoutJS模板渲染後綁定事件

基本上,我試圖找出KnockoutJS在使用類似jQuery模板之類的模板呈現後創建的可訂閱事件。

我會使用內置的「afterRender」,但我發現它不會觸發,如果可觀察數組被清除。我建立了這個演示來說明這個問題:http://jsfiddle.net/farina/YWfV8/1/

此外,我知道我可以寫一個自定義處理程序......但這似乎真的不需要我需要什麼。

我只想在模板完成渲染後觸發一個事件。

回答

29

我的同事實際上是在我回家之前用我們一起玩的東西解決了這個問題。

因此,事件「afterRender」,「afterAdd」和「beforeRemove」的整個「問題」在於它們的作用與「foreach」綁定有所不同。 KnockoutJS很高興能夠告訴你他們的page,但無論出於何種原因,直到我在練習中看到它之前,它才真正沉溺於我。

什麼是真正的工作是要打消「的foreach」結合,並使用淘汰賽的本地「數據」綁定這樣的:

data-bind="template: { name: 'item-template', data: items, afterRender: caller }" 

然後「AfterRender階段」的工作原理完全顧名思義。

我的印象是,你無法迭代集合並呈現新的用戶界面沒有foreach,但這些例子說明它的工作。

我爲兩個視圖模型的樣式的例子,因爲我有時需要一個或另一個。

感謝您的幫助丹!

+0

不幸的是,由於淘汰賽參考文件斷裂,兩支筆都被打破了。現在還有一個用於模板綁定的foreach屬性。 – Olga 2016-09-02 15:37:10

-1

beforeRemove是你在找什麼?我不確定你想要達到什麼樣的行爲。請結帳這個樣品:http://jsfiddle.net/romanych/YWfV8/8/ 這是你想要或沒有?

+0

beforeRemove實際上並未覆蓋它,因爲它在模板呈現之前觸發。我需要進入模板完成的時刻。 – farina 2012-02-16 18:15:55