Knockout.js 敲除-使用附加参数绑定事件

Knockout.js 敲除-使用附加参数绑定事件,knockout.js,Knockout.js,我有一个组成导航菜单的链接列表。我正在尝试将tap事件绑定到a标记 这是html <a data-bind="event: { tap: $parent.menuClick.bind($index, $data.menuText, $data.menuValue) }"> 这不起作用。当我在menuClick函数中插入断点时,我看到参数值完全乱了套 menuIndex参数包含菜单项的文本。 menuText参数具有菜单项的值 menuValue参数具有敲除$data对象 有人能告诉

我有一个组成导航菜单的链接列表。我正在尝试将tap事件绑定到a标记

这是html

<a data-bind="event: { tap: $parent.menuClick.bind($index, $data.menuText, $data.menuValue) }">
这不起作用。当我在menuClick函数中插入断点时,我看到参数值完全乱了套

menuIndex参数包含菜单项的文本。 menuText参数具有菜单项的值 menuValue参数具有敲除$data对象

有人能告诉我如何正确传递参数吗

谢谢。

函数的第一个参数是。因此,menuText最终显示为menuIndex参数,依此类推。在其位置传递其他内容,例如视图模型

<a data-bind="event: {
    tap: $parent.menuClick.bind($root, $index, $data.menuText, $data.menuValue)
}">...</a>
要绑定的第一个参数是在被调用函数中用作此参数的值。因此,您可能希望绑定如下所示:

event: { tap: $parent.menuClick.bind($parent.menuClick, $index, $data.menuText, $data.menuValue) }
或者,您可能对允许您为事件运行表达式的感兴趣:

on.tap: $parent.menuClick($index, $data.menuText, $data.menuValue)

这两种方式都不重要,这是不正确的。bind调用中指定的值始终优先,并且在使用call或apply时不会像Knockout那样被覆盖。没错,我误解了我在测试中看到的内容。
on.tap: $parent.menuClick($index, $data.menuText, $data.menuValue)