将事件对象传递给 KNOCKOUT.js函数

Passing the event object to knockout.js function

本文关键字:KNOCKOUT js 函数 事件 对象      更新时间:2023-09-26

我正在使用bind来调用具有我视图的参数的函数:

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

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

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

Chrome中一切正常,但是在Firefox中,我收到以下控制台错误:

未定义事件

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

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

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

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

虽然这应该有效,但从代码中使用 DOM 做一些事情被认为是不好的做法。请尝试改为创建自定义绑定。

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