5

我正在尝试使用 bootstrap 样式精美的按钮下拉菜单进行淘汰。不幸的是,下拉菜单是使用链接而不是构建的,<select>并且 knockout-bootstrap 没有任何帮助的处理程序。

我已经能够让所有样式正常工作(按钮类型、图标、选择/取消选择)。但是,我仍然无法让点击功能工作:

JS 小提琴示例

<div class="btn-group">
<!-- Change button type based on status -->
<button type="button" class="btn btn-small dropdown-toggle" data-bind="css: {'btn-default' : status().statusName=='Matched', 'btn-danger' : status().statusName=='None', 'btn-info' : status().statusName=='Set'}" data-toggle="dropdown">

  <!-- Add Glyph based on status -->
  <span class="glyphicon" data-bind="css: {'glyphicon-ok' : status().statusName=='Matched', 'glyphicon-remove' : status().statusName=='None', 'glyphicon-list' : status().statusName=='Set'}"></span> <span data-bind="text: status().statusName"> </span> <span class="caret"></span>
</button>

<!-- Loop for status -->
<ul class="dropdown-menu" role="menu" data-bind="foreach: $root.availableStatus">
  <!-- Disable item if selected -->
  <li data-bind="css: {'disabled' : statusName==$parent.status().statusName}">
    <!-- Not working -->
    <a href="#" data-bind="click: $root.updateStatus"><span class="glyphicon" data-bind="css: {'glyphicon-ok' : statusName=='Matched', 'glyphicon-remove' : statusName=='None', 'glyphicon-list' : statusName=='Set'}"></span> <span data-bind="text: statusName"></span></a>]
4

2 回答 2

10

修改后的 JS Fiddle 示例

重现步骤

  1. 摆脱. updateStatus_ $root这个简单的任务不需要它。

  2. click将事件绑定到$parent.status.

    我们希望调用当前的status函数 (a ko.observable) Article。在定义锚点的地方,上下文父级是Article,因此您要使用$parent.status. 当前上下文,$root.availableStatus即被点击的元素,是将传递给status函数的参数。

     <a href="#" data-bind="click: $parent.status">...</a>
    
于 2013-09-04T20:58:31.543 回答
0

我不知道它是否可以帮助你(我没有在你的小提琴中看到参考):

按钮下拉菜单需要Bootstrap 下拉插件才能运行。

$('.dropdown-toggle').dropdown()
于 2013-09-04T20:55:29.670 回答