我不知道我是否完全以錯誤的方式去解決這個問題!但是我希望能夠在元素中的所有代碼都被執行後調用一個元素的自定義綁定。敲除內部dom元素呈現後調用js自定義綁定
我嘗試了很多方法:模板,如果綁定afterrender和自定義綁定,但由於該元素內的內容使用foreach所有綁定,我已經嘗試調用之前調用我的方法foreach將呈現的dom元素已經運行。
我可以想到的唯一選擇是延遲我的方法調用幾分之一秒,但這似乎有點哈克。
任何幫助將不勝感激。
我不知道我是否完全以錯誤的方式去解決這個問題!但是我希望能夠在元素中的所有代碼都被執行後調用一個元素的自定義綁定。敲除內部dom元素呈現後調用js自定義綁定
我嘗試了很多方法:模板,如果綁定afterrender和自定義綁定,但由於該元素內的內容使用foreach所有綁定,我已經嘗試調用之前調用我的方法foreach將呈現的dom元素已經運行。
我可以想到的唯一選擇是延遲我的方法調用幾分之一秒,但這似乎有點哈克。
任何幫助將不勝感激。
我不知道你的確切情況,但有幾種方法可以讓你延遲(setTimeout
)代碼。
一個選項是在您的自定義綁定中使用ko.applyBindingsToDescendants(context, element)
。這將強制運行此元素的所有子項上的綁定。然後,您可以繼續使用您想要運行的代碼。您可能希望將您的自定義綁定放置在具有您的foreach
的元素的容器上。
如果您正在處理相同的元素,另一種選擇是讓您的自定義綁定也處理foreach
。在這種情況下,您可以在您的元素上調用ko.applyBindingsToNode(element, { foreach: someItems }, context)
,然後繼續處理您的代碼。
感謝@RP Niemeyer,是的,第二種選擇可能是最好的。問題是我添加了一個自定義滾動到一個div,該div包含尚未渲染的元素,但只能在渲染後運行。除了需要滾動的框的大小改變滾動庫需要被重置的大小之外,不會有問題。這是一種痛苦。謝謝 – nodrog
我不確定什麼「畢竟代碼」已被執行。如果你的意思是「在像foreach之類的綁定之後」執行,那麼這可能有所幫助:http://stackoverflow.com/questions/16592237/custom-binding-for-when-foreach-has-finished-rendering/22383861#22383861 –