2013-12-18 37 views
-1

我想要的視圖模型實例來完成,然後只調用loadUniqueUrl(viewModel);下面的代碼:Knockout.js:等待視圖模型實例來完成

var viewModel = new ViewModel(data, subTopicId, chapterId, planId); 
ko.applyBindings(viewModel); 
loadUniqueUrl(viewModel); 

我不能修改ViewModel.I不知道如何使用回調在這種情況下。請幫助

+1

您的代碼逐行執行,因此當applyBidings完成時,loadUniqueUrl將被調用。當然,如果你的ViewModel沒有任何Ajax調用。 – alexmac

+0

不完全@亞歷山大。 Javascript是異步的。 –

+1

你應該使用回調 –

回答

-1

通常只需要很少的時間完成綁定...在情況下,事情只是爲了你而快速解僱並且你無法控制你的對象模型,在簡單的setTimeout中包裝你想要執行的功能。

setTimeout(loadUniqueUrl(viewModel), 200) 
+1

大錘的做法。如果你完成得更快,UI就會等待。如果加載時間超過200,那麼你開始加載一個部分初始化的對象,這可能會導致各種問題。 –

+0

感謝您的建設性意見和明智的話語。正如他所說,他無法訪問視圖模型...如果這也意味着他無權訪問添加ko.computed對象,則「延遲評估」選​​項不可用。我們中的一個人很有幫助。 – beauXjames

+0

我沒有提供一個不完整的解決方案,或者因爲有人指出我的解決方案存在潛在的問題而發愁。我們中的一個人沒有親自接受。 –