knockout applyBindings改变了事件

时间:2014-06-27 02:52:41

标签: javascript knockout.js

有没有办法在ko中听取applyBindings事件?

我搜索了谷歌和搜索引擎优化,但无法找到方法。需要支持答案,即不要调用KO开发人员将来可能会更改的内部函数。

以下question 类似,因为它询问如何检查是否已调用applyBindings 。我想知道何时调用

1 个答案:

答案 0 :(得分:1)

在JavaScript中,拦截任何方法调用都非常容易,因为您只需修改对象即可。因此,您可以将ko.applyBindings替换为您自己的函数(在您调用原始函数之前或之后):

ko.applyBindings = (function(original) {
    return function () {
        original.apply(this, arguments);
        alert('ko.applyBindings called');
    };
})(ko.applyBindings);

http://jsfiddle.net/mbest/4a2vK/

注意:此方法在Knockout的调试版和发行版之间的行为会有所不同。 Knockout在内部使用ko.applyBindings进行template绑定,在使用发行版时,它将始终调用内部ko.applyBindings函数,而在调试版本中,它将调用我们的替换函数。