2017-05-06 103 views
0

我使用owlCarousel圍繞自定義組件的基因敲除數據綁定列表以及異步加載了require的模板。 爲了設置工作,我必須在渲染所有DOM元素之後初始化傳送帶對象。 setTimeout函數是一個工作難看的選項。是否有某種事件在knockout完成所有異步DOM操作時得到通知?KnockoutJS中的異步模板與貓頭鷹傳送帶

回答

0

您可以使用foreach綁定的afterRender回調。搜索「AfterRender階段」這個KO文檔頁面上:

http://knockoutjs.com/documentation/foreach-binding.html

AfterRender階段得到每個列表中的項目渲染的時候被調用,所以你可能需要編寫一些代碼做的一些計數查看模型知道你何時擊中列表中的最後一個項目,此時可以初始化該輪播。不是超級乾淨,但肯定比setTimeout方法更好,你可以處理任意延遲和可能的競爭條件。

另一種選擇是爲旋轉木馬編寫自己的定製Knockout綁定。似乎這將是最乾淨的方法,並且可以重複使用。看起來至少有一個人有同樣的需求。您可能會發現他們的習俗在GitHub上有用的結合:

https://github.com/Crunc/knockout-owlCarousel

我還沒有與此結合之前,所以我不能肯定它會適合您的需要的工作,但它可能是你一個很好的起點。