有没有办法在ko中听取applyBindings
事件?
我搜索了谷歌和搜索引擎优化,但无法找到方法。需要支持答案,即不要调用KO开发人员将来可能会更改的内部函数。
以下question 不类似,因为它询问如何检查是否已调用applyBindings 。我想知道何时调用。
答案 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
函数,而在调试版本中,它将调用我们的替换函数。