最近我将代码从ko 2.2.1升级到3.0.0并体验了一些功能,其中一个功能与使用2.2.1但在3.0.0版本中打破的单选按钮有关。
我已经过去了 http://knockoutjs.com/upgrade-notes/v3.0.0.html表示现在淘汰赛将严格检查。 以前我们有一些像
这样的东西 <input type="radio" name="defaultlang" data-bind="attr:{value: 1},checked: 1">
在2.2.1上正常工作现在淘汰最新建议将其改为
<input type="radio" name="defaultlang" data-bind="checkedValue: 1,checked: 1">
有没有其他方法可以进行更改?并希望与两个ko版本一起使用?
这是jsFiddle的相同。
http://jsfiddle.net/6mr5recs/
答案 0 :(得分:0)
如果检查的绑定值为字符串,则检查的绑定在v.3.0.0中正常工作:
<input type="radio" name="defaultlang" data-bind="attr:{value: 1},checked: '1'">
以下是更新小提琴:http://jsfiddle.net/6mr5recs/6/
答案 1 :(得分:0)
通常您会使用数组来存储您的无线电组的选项。如果您不希望这样做,您仍然可以将其存储在value属性的视图中,并使用checkedValue: $element.value
进行设置。
我稍微修改了你的小提琴,因为对于一个提供水果(而不是数量)之间选择的无线电组quantity
可观察是没有意义的,最重要的是有一个名称defaultLanguage
。
无论如何,这是构建选项组的正确方法:http://jsfiddle.net/kevinvanlierde/6mr5recs/7/
代码:
<div>
<input type="radio" name="defaultlang" value="fr" data-bind="checkedValue: $element.value, checked: selectedLang "/>
<span>FR</span>
</div>
<div>
<input type="radio" name="defaultLang" value="en" data-bind="checkedValue: $element.value, checked: selectedLang" />
<span>EN</span>
</div>
<div>
<input type="radio" name="defaultlang" value="de" data-bind="checkedValue: $element.value, checked: selectedLang"/>
<span>DE</span>
</div>
其中selectedLang保存所选选项的值。