【问题标题】:Passing the event object to knockout.js function将事件对象传递给 knockout.js 函数
【发布时间】:2016-03-11 00:34:08
【问题描述】:

在我看来,我正在使用bind 调用带有参数的函数:

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

根据this answer,我通过这样做得到event 对象:

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

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

事件未定义

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

【问题讨论】:

  • 您问题中的代码使用了一个名为event 的变量(?),但不清楚它来自哪里。

标签: javascript knockout.js knockout-3.2


【解决方案1】:

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

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

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

虽然这应该可行,但从代码中处理 DOM 被认为是不好的做法。 Try creating a custom binding instead.

【讨论】:

  • 很好的解释!谢谢!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    相关资源
    最近更新 更多