我有一个组成导航菜单的链接列表。我正在尝试将tap事件绑定到a标签。
这是html
<a data-bind="event: { tap: $parent.menuClick.bind($index, $data.menuText, $data.menuValue) }">
这是javascript
this.menuClick = function (menuIndex, menuText, menuValue) {
....
}
这不起作用。当我在menuClick函数中放入断点时,我看到参数值完全搞砸了。
menuIndex param包含菜单项的文本
menuText参数具有菜单项的值
menuValue param有淘汰“$ data”对象。
有人可以告诉我如何正确传递参数。
感谢。
答案 0 :(得分:0)
bind()
函数的第一个参数是this
。因此menuText
最终显示为menuIndex
参数,依此类推。在其位置传递其他内容(例如,视图模型)。
<a data-bind="event: {
tap: $parent.menuClick.bind($root, $index, $data.menuText, $data.menuValue)
}">...</a>
答案 1 :(得分:0)
bind
的第一个参数是在被调用函数(MDN)中用作this
的值。所以你可能希望绑定是这样的:
event: { tap: $parent.menuClick.bind($parent.menuClick, $index, $data.menuText, $data.menuValue) }
或者,您可能对Knockout.Punches plugin感兴趣,它允许您为事件提供表达式:
on.tap: $parent.menuClick($index, $data.menuText, $data.menuValue)