单选按钮在淘汰赛 3 中不起作用

Radio Button not working with knockout 3

本文关键字:不起作用 淘汰赛 单选按钮      更新时间:2023-09-26
最近我将代码从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/

如果检查绑定的值是字符串,则在 v.3.0.0 中工作正常:

<input type="radio" name="defaultlang" data-bind="attr:{value: 1},checked: '1'">

这是更新小提琴:http://jsfiddle.net/6mr5recs/6/

通常,

您将使用数组来存储单选组的选项。如果您不想这样做,您仍然可以将其存储在 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 保存所选选项的值。