通常我可以在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,但我希望得到一个简单的答案。
任何帮助都是真心相关的。
由于
答案 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>
答案 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