在Knockout文档的显式订阅可观察对象一节中,有对subscribe
函数的event
参数的引用,但该页上只给出了change
和beforeChange
两个示例。
通过示例,我尝试通过"focus"
作为第三个参数,但这不起作用。我并不太惊讶,因为"focus"
是一个DOM元素的事件,而不是一个击倒可观察对象,但尽管如此,理论上它可以为绑定到该可观察对象的所有元素设置一个订阅的焦点事件。
是否有一个可以使用Knockout的observable.subscribe
函数手动订阅的所有事件列表?
在这种情况下使用"event"绑定是有意义的。
因为只有两种方法可以通知订阅者可观察变量:beforeChange
和change
。
在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);
}
};