1

从我的角度来看,我正在使用bind参数调用该函数:

<span data-bind="click: modifyByOne.bind($data, 'plus')"></span>

根据这个答案,我event通过这样做得到对象:

self.modifyByOne = function(type){
    var span = $(event.currentTarget);
};

在 Chrome 中一切正常,但在 Firefox 中出现以下控制台错误:

事件未定义

我怎样才能让它在 Firefox 中也能正常工作?淘汰赛文档没有对此提供太多答案。

4

2 回答 2

5

淘汰点击绑定将两个参数传递给侦听器方法:当前绑定上下文 ( $data) 和事件。

通过使用 bind,您可以像以前一样指定要传递给方法的附加参数。这些参数在两个默认参数之前传递。因此,您的方法应该接受类型、数据事件参数。

self.modifyByOne = function(type, data, event){
  var span = $(event.target);
};

虽然这应该可行,但从代码中处理 DOM 被认为是不好的做法。请尝试创建自定义绑定

于 2016-03-10T16:34:08.753 回答
0

您没有event在函数签名中声明参数。但除此之外,如果您需要访问 Knockout 中的实际 DOM 元素,您应该使用自定义绑定处理程序;您不应该从视图模型内部访问 DOM。

于 2016-03-10T16:26:59.423 回答