将事件对象传递给 knockout.js 函数
Passing the event object to knockout.js function
我正在使用 bind
调用带有我认为的参数的函数:
<span data-bind="click: modifyByOne.bind($data, 'plus')"></span>
根据 this answer 我通过这样做得到了 event
对象:
self.modifyByOne = function(type){
var span = $(event.currentTarget);
};
在 Chrome 中一切正常,但在 Firefox 中我收到以下控制台错误:
event is not defined
如何让它在 Firefox 中也能正常工作?
Knockout 文档对此没有提供太多答案。
您没有在函数签名中声明 event
参数。但除此之外,如果您需要在 Knockout 中访问实际的 DOM 元素,您应该使用自定义绑定处理程序;您不应该从视图模型内部访问 DOM。
敲除点击绑定将两个参数传递给侦听器方法:当前绑定上下文 ($data
) 和事件。
通过使用绑定,您可以像以前一样指定要传递给该方法的其他参数。这些参数在两个默认参数之前传递。因此,您的方法应该接受类型、数据 和 事件参数。
self.modifyByOne = function(type, data, event){
var span = $(event.target);
};
虽然这应该可行,但使用代码中的 DOM 进行操作被认为是不好的做法。 Try creating a custom binding instead.
我正在使用 bind
调用带有我认为的参数的函数:
<span data-bind="click: modifyByOne.bind($data, 'plus')"></span>
根据 this answer 我通过这样做得到了 event
对象:
self.modifyByOne = function(type){
var span = $(event.currentTarget);
};
在 Chrome 中一切正常,但在 Firefox 中我收到以下控制台错误:
event is not defined
如何让它在 Firefox 中也能正常工作? Knockout 文档对此没有提供太多答案。
您没有在函数签名中声明 event
参数。但除此之外,如果您需要在 Knockout 中访问实际的 DOM 元素,您应该使用自定义绑定处理程序;您不应该从视图模型内部访问 DOM。
敲除点击绑定将两个参数传递给侦听器方法:当前绑定上下文 ($data
) 和事件。
通过使用绑定,您可以像以前一样指定要传递给该方法的其他参数。这些参数在两个默认参数之前传递。因此,您的方法应该接受类型、数据 和 事件参数。
self.modifyByOne = function(type, data, event){
var span = $(event.target);
};
虽然这应该可行,但使用代码中的 DOM 进行操作被认为是不好的做法。 Try creating a custom binding instead.