订阅者Firefox中未定义Knockout.js事件

时间:2013-10-09 20:12:22

标签: firefox knockout.js

当我订阅一个名为“degree”的observable时,我想在回调中使用event.target来获取触发change事件的DOM元素。这适用于Chrome,但在Firefox中我得到“事件未定义”

 self.degree.subscribe(function(degree){
  console.log(event.target);
 })

1 个答案:

答案 0 :(得分:2)

subscribe API未将event传递给回调。在某些浏览器(如Firefox)中,event不在window上,只能作为事件处理程序的参数访问。

根据您的目的,您可以这样做:

<input data-bind="event: { change: myHandler }" />

然后,定义一个处理程序:

myHandler: function(data, event) {
     //do something
}

但是,在Knockout中访问视图模型中的DOM元素通常不是一个好的模式。 Custom bindings是在视图模型更改和DOM元素之间建立连接的好方法。