ko.applyBindings的成功处理程序

时间:2013-11-22 13:12:25

标签: javascript knockout.js

我有一段代码将在applyBindings成功完成后执行。

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

由于异步执行,有时dependantMethod()会更快执行。有没有办法找出ko.applyBindings是否已成功执行,以便我可以放置dependantMethod();成功处理程序内部?

感谢。

1 个答案:

答案 0 :(得分:0)

如果没有看到您的viewmodel,则很难完全回答,但您可能需要考虑在视图模型中使用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(); 
    };
}