【问题标题】:knockout applyBindings changed event淘汰 applyBindings 更改事件
【发布时间】:2014-08-18 01:19:39
【问题描述】:

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

我已经搜索了 google 和 SO,但找不到方法。答案需要得到支持,即不调用将来可能被 KO 开发人员更改的内部函数。

下面的question类似,因为它询问如何检查 applyBindings 是否已被调用。我想知道什么时候调用它。

【问题讨论】:

    标签: javascript knockout.js


    【解决方案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 函数,而在调试版本中,它会调用我们的替换函数。

    【讨论】:

    • 谢谢!我不知道你能做到这一点,诚然我对 javascript 不是很好。
    猜你喜欢
    • 2013-06-19
    • 1970-01-01
    • 2013-09-10
    • 2022-10-17
    • 2012-02-26
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 2013-08-06
    相关资源
    最近更新 更多