Javascript 获取对提交处理程序的访问权';KnockoutJS中的s事件对象

Javascript 获取对提交处理程序的访问权';KnockoutJS中的s事件对象,javascript,knockout.js,Javascript,Knockout.js,我已将ViewModel的submitForm方法绑定到我的form元素,如下所示: <form action="#" method="post" data-bind="submit: submitForm"> 当我提交表单时,上面的处理程序会被触发,但是事件是未定义的。我以上述代码为基础,该代码说明如下: function ViewModel() { this.submitForm = function (data, event) { console.lo

我已将ViewModel的
submitForm
方法绑定到我的
form
元素,如下所示:

<form action="#" method="post" data-bind="submit: submitForm">
当我提交表单时,上面的处理程序会被触发,但是
事件
未定义的
。我以上述代码为基础,该代码说明如下:

function ViewModel() {
    this.submitForm = function (data, event) {
        console.log(event); //undefined
    };
}

ko.applyBindings(new ViewModel());
注意2:访问事件对象或传递更多参数

在某些情况下,您可能需要访问DOM事件对象 与您的单击事件关联。淘汰赛将通过该事件作为 函数的第二个参数,如本例所示:


点击我
var viewModel={
myFunction:函数(数据、事件){
if(事件移位键){
//当用户按下shift键时,执行不同的操作
}否则{
//做正常动作
}
}
);
应用绑定(视图模型);
注意:上面的语法错误是从KnockoutJS示例中逐字复制而来的。我认为这是一个错误,明显的更正应该会导致代码按文档所述工作

这个代码示例和文档中的引用尽可能地模仿了我上面写的内容。但是,
事件
未定义的

问题:
  • 如何在提交处理程序中访问
    事件
    对象

对于那些想知道我为什么要引用
click
绑定文档的人,我是从以下说明中得到指导的:

function ViewModel() {
    this.submitForm = function (data, event) {
        console.log(event); //undefined
    };
}

ko.applyBindings(new ViewModel());
有关如何将其他参数传递给submit的信息,请参见 处理程序函数,或者在调用时如何控制此句柄 不在视图模型上的函数,请参见与 单击绑定。该页面上的所有注释都适用于提交处理程序 也是。

无法在
提交
绑定处理程序中获取
事件
对象

但是,您可以使用并手动订阅
submit
事件:

<form method="post" action="#" data-bind="event: {'submit': submitForm}">
    <input type="submit"/>
</form>

演示。

来自

KO将表单元素作为参数传递给提交处理程序 功能

因此,您可能需要使用:


data bind=“event:{submit:submitForm}”

完美。我觉得奇怪的是,
event
对象没有传递给
submit
绑定,但是
event
绑定也可以用于我的目的。谢谢!是的,但是文档中还声明:有关如何向提交处理程序函数传递其他参数,或如何在调用视图模型以外的函数时控制此句柄的信息,请参阅与单击绑定相关的说明。该页上的所有说明也适用于提交处理程序