knockout - 单选按钮中已检查绑定的初始值

时间:2017-10-12 13:29:00

标签: knockout.js

我想知道为什么在下面的例子中,默认情况下不会检查radiobuttons,即使它们被绑定到初始化为ch的可观察true属性。

 <div data-bind="foreach : boxList">
<span data-bind="text : name"></span>
<input type="radio" name="ch" value="true" data-bind="checked : ch"/>

</div>
 var viewModel = function() {
   this.boxList = [ 
     { name : 'T1', ch : ko.observable("true")},
     { name : 'T2', ch : ko.observable("true")}
   ];

 }

 ko.applyBindings(new viewModel());

https://jsfiddle.net/bspsack5/6/

1 个答案:

答案 0 :(得分:1)

因为Knockout假定如果其value属性与其检查的绑定所连接的observable的值匹配,则检查单选按钮。换句话说,如果您的无线电的值是left,那么将检查Knockout是否在observable中找到分配给"left"绑定表达式的值checked: someObservable。这在docs上进行了详细讨论。

你可以找到你的小提琴here的工作修改。所有发生的事情都是在viewmodel上定义了一个属性:

this.selectedValue = ko.observable('A');

然后在checked绑定表达式中使用。因此checked“保留用户的选择”,而value绑定表达式应指向Knockout用于切换checked状态的输入字段使用的实际值:

data-bind="checked : $parent.selectedValue, value: value"