2013-11-22 26 views
0

我有一段代碼將在applyBindings成功完成後執行。ko.applyBindings的成功處理程序

var vmObject = new myViewModel(); 
ko.applyBindings(vmObject, document.getElementById('page1')); 
dependantMethod(); 

由於異步執行,有時會很快執行dependantMethod()。有沒有辦法找出ko.applyBindings是否已經成功執行,以便我可以放置dependantMethod();成功處理程序內?

謝謝。

+0

'applyBindings'不是異步的,所以在你的代碼示例中'dependantMethod'總是在'applyBindings'成功執行後執行。 'applyBindings'可能會觸發異步事件,但我們需要查看你的'myViewModel'代碼。 – sroes

+0

您可以根據您的結局結果來關閉/刪除問題 – Tanner

回答

1

沒有看到您的視圖模型,很難完全回答,但您可能需要考慮在視圖模型中使用knockout subscribe函數。

如果在viewmodel中有一個可觀察或可觀察的數組,您可以訂閱對其的更改並驗證它是否具有期望的值,然後從那裏調用依賴函數。

var myViewModel = function() { 
    var self = this; 

    self.myArray = ko.observableArray([]); 

    // some code that populates the array 

    var subscription = self.myArray.subscribe(function (arr) { 
     // some check on the observable 
     if (arr.length > 0) { 
      self.dependantMethod();         
     } 
    }); 

    self.dependantMethod = function() { 
     // execute your code 

     // posibly dispose of the subscription if you don't want 
     // it called multiple times 
     subscription.dispose(); 
    }; 
} 
相關問題