广播电台下拉到相同的观察 - 淘汰赛

时间:2016-10-19 18:37:29

标签: jquery asp.net-mvc knockout.js

我为无线电列表“已检查”数据绑定指定了相同的可观察值,并为下拉列表指定了“值”数据绑定

 <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/

1 个答案:

答案 0 :(得分:1)

对于提供的小提琴,我在你的html

中找出了两个不同的问题
  1. foreach绑定上下文中更改为当前项,您需要使用$parent访问selectedCar属性。
  2. 当处理此绑定时,输入/无线电位于带有文本绑定的标签内,正在替换所有内部内容
  3. 你的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/