哪些事件可以使用Knockout的observable.subscribe功能订阅



在Knockout文档的显式订阅可观察对象一节中,有对subscribe函数的event参数的引用,但该页上只给出了changebeforeChange两个示例。

通过示例,我尝试通过"focus"作为第三个参数,但这不起作用。我并不太惊讶,因为"focus"是一个DOM元素的事件,而不是一个击倒可观察对象,但尽管如此,理论上它可以为绑定到该可观察对象的所有元素设置一个订阅的焦点事件。

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

在这种情况下使用"event"绑定是有意义的。

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

在knockoutJs代码中有一个简单的if块链,它检查是否指定了事件,如果事件等于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);
    }
  };

最新更新