将常量或参数传递给KO.js中的数据绑定单击函数

时间:2015-06-10 22:19:11

标签: knockout.js

我想实现一个菜单。菜单中的每个按钮都应在模型中设置菜单ID。我尝试这样做,但它不起作用:

<a class="btn btn-primary btn-large"
     data-bind="click:selectUi('menu'),visible:sessionId()!=''">
  Menu
</a>

而是在页面加载时调用selectUi。

现在我想到的唯一可能的解决方案是为每个按钮实现一个功能。这是正确的方法吗?

3 个答案:

答案 0 :(得分:2)

将函数调用包装在函数中。

<a class="btn btn-primary btn-large"
     data-bind="click:function () { selectUi('menu'); },visible:sessionId()!=''">
  Menu
</a>

您还可以让selectUi返回一个功能。

答案 1 :(得分:1)

使用Punches插件,这很简单:

<a class="btn btn-primary btn-large"
     data-bind="on.click: selectUi('menu'), visible: sessionId()!=''">Menu</a>

如果没有插件,您可以使用匿名函数或bind

<a class="btn btn-primary btn-large"
     data-bind="click: selectUi.bind($data, 'menu'), visible: sessionId()!=''">Menu</a>

答案 2 :(得分:0)

仅仅提到一个可能的解决方案,我在应用Roy J的答案之前已经使用过。

使用不带参数的功能。

e.g:

<a data-bind="click:selectUi_menu"> Menu </a>