可以使用Knockout的observable.subscribe函数订阅哪些事件

ec2*_*011 5 events subscriptions knockout.js

在Knockout文档的Explicitly Subscribing to Observables部分下,有一个函数event参数的引用subscribe,但该页面上给出的唯一两个例子是changebeforeChange.

举个例子,我尝试传入"focus"作为第三个参数,但是没有用.我不是太惊讶,因为"focus"DOM元素的事件而不是淘汰观察,但是理论上它可以为绑定到该可观察对象的所有元素设置焦点事件的订阅.

是否有可以使用Knockout observable.subscribe函数手动订阅的所有事件的列表?

Dmi*_*ets 3

在您的情况下使用“事件”绑定是有意义的。

因为只有两种方法可以通知订阅者可观察变量:beforeChangechange

在 KnockoutJs 代码中,有一个简单的 if 块链,用于检查是否指定了 event 以及 event 是否等于beforeChange。这基本上就是那里的所有逻辑,因此没有触发其他事件。


部分形式的knockoutJS实现了这个逻辑:

  self["notifySubscribers"] = function(value, event) {
    if (!event || event === defaultEvent) {
      self._rateLimitedChange(value);
    } else if (event === beforeChange) {
      self._rateLimitedBeforeChange(value);
    } else {
      self._origNotifySubscribers(value, event);
    }
  };
Run Code Online (Sandbox Code Playgroud)