我为无线电列表“已检查”数据绑定指定了相同的可观察值,并为下拉列表指定了“值”数据绑定
<select name="controls" data-bind="options: cars(), optionsText:'make', optionsValue:'id', value: $root.selectedId, optionsCaption: 'Select One'"> </select>
<div data-bind="foreach: cars">
<div>
<input type="radio" name="controls" data-bind="checked: $root.selectedId, checkedValue: id, value: id"><div data-bind="text:make">
</div>
</div>
因为,默认情况下,下拉列表总是保留一些值“选择一个”或所选值。不允许用户在单选按钮列表上进行选择。当用户点击单选按钮时,它未被检查/选择。
我可以通过两个不同的可观察量来修复,但由于某些原因我想保持相同的可观察量
jsFiddle - https://jsfiddle.net/9vm01e3r/2/
答案 0 :(得分:1)
对于提供的小提琴,我在你的html
中找出了两个不同的问题foreach
绑定上下文中更改为当前项,您需要使用$parent
访问selectedCar
属性。你的html看起来应该是这样的
<div data-bind="foreach: cars">
<label data-bind="text:name"></label>
<input type="radio" data-bind="checked: $parent.selectedCar, checkedValue: id, value: id" />
</div>
修改强>
好的我知道发生了什么,当您点击无线电中的一个选项时,该项不是select标签的有效项,因为它不在options
数组中,然后敲除将value
设置为未定义的无线电将被取消选择。
因此,另一种方法是在select标记上使用valueAllowUnset: true
(文档here)
请把这个更新的小提琴 https://jsfiddle.net/tbdo4rxq/