Javascript 淘汰赛:Can';t解析绑定

Javascript 淘汰赛:Can';t解析绑定,javascript,html,knockout.js,Javascript,Html,Knockout.js,我对击倒有点问题。它告诉我它不能解析特定的绑定。如果我没有在HTML中包含绑定,页面将编译,我可以手动运行事件处理程序(在控制台中)。以下是绑定的外观: <!-- ko foreach: problems --> <li data-bind="css: {active: $root.current.number() == $data.number() }"> <a data-bind="click: $root.setCurrent( $data.num

我对击倒有点问题。它告诉我它不能解析特定的绑定。如果我没有在HTML中包含绑定,页面将编译,我可以手动运行事件处理程序(在控制台中)。以下是绑定的外观:

<!-- ko foreach: problems -->
  <li data-bind="css: {active: $root.current.number() == $data.number() }">
    <a data-bind="click: $root.setCurrent( $data.number ), text: $data.number">
<!-- /ko -->

其思想是,
setCurrent
接受一个int,它是一个“问题编号”,并且首先更新当前问题,然后将当前问题更改为一个新问题(其编号是原始参数)。很抱歉这里的噪音。

当您在knockout中将一个函数绑定到一个事件时,您通常会调用不带括号的函数(类似于使用addEventListener的方式)

Knockout自动将当前模型对象作为第一个参数提供给函数,然后将激活绑定的实际DOM事件作为第二个参数

如果将代码更改为:

<a data-bind="click: $root.setCurrent, text: $data.number">

我想您只需要重新订购几行。当ko运行
applyBindings
时,
setCurrent
仍未定义。谢谢。我在评论中使用了这个提示,并根据你的建议进行了调整。它工作得很好。我读过那页,但没有“点击”。
<a data-bind="click: $root.setCurrent, text: $data.number">
<a data-bind="click: function(data, event) { $root.setCurrent($data.number) }, text: $data.number">