使用单击按钮与knockoutjs

时间:2015-04-17 15:55:51

标签: knockout.js

通常我可以在knockoutjs中使用单选按钮,如下所示:

<input type="radio" value=1 data-bind="checked: groupvalue" /><span data-bind="text: 1"></span

但是,如果我想从数组中动态获取值,那该怎么办呢?

以下不起作用..

<tbody data-bind="foreach: colors">
                        <tr><td><input type="radio" data-bind="checkedValue:$data, checked: groupvalue" /><span data-bind="text: $data"></span></td></tr>
      </tbody>

颜色是:

self.colors = ko.observableArray([
                        'Red',
                        'Green',
                        'Blue',
                        'Brown',
                        'Yellow',
                        'White',
                        'Black'
                    ]);

我见过this,但我希望得到一个简单的答案。

任何帮助都是真心相关的。

由于

2 个答案:

答案 0 :(得分:2)

我认为你唯一的问题是groupvalue没有在被迭代的模型中定义,所以如果你看一下控制台,你会看到一个错误:

  

无法处理绑定“foreach:function(){return colors}”   消息:无法处理绑定“checked:function(){return groupvalue}”   消息:未定义组值

这会阻止javascript的进一步运行。将绑定更改为某些内容(大概就像$root.groupvalue)并且它可以正常工作

<tbody data-bind="foreach: colors">
   <tr><td><input type="radio" data-bind="checkedValue:$data, checked: $root.groupvalue" />
          <span data-bind="text: $data"></span></td></tr>

实例:http://jsfiddle.net/4h5bkw8t/

答案 1 :(得分:2)

您需要使用foreach跳出$parent上下文才能转到groupvalue

<tbody data-bind="foreach: colors">
  <tr>
    <td>
      <input type="radio" data-bind="checkedValue:$data, checked: $parent.groupvalue" /><span data-bind="text: $data"></span>
    </td>
  </tr>
</tbody>

这是Plunkr