挖空.js:可观察的初始值不会更新单选按钮状态



这是我无法使它起作用的非常简单的故事:

我们有一个questions的数组。每个问题都有answer的数组。每个答案都有textvalue。每个question都有代表选定答案value的属性selectedAnswer

这是jsfiddle:https://jsfiddle.net/votsevfd/8/

实现:

<div data-bind="foreach : {data: questions}">
Question: <span data-bind="text: descr"></span>
<div data-bind="foreach: {data: answers}">
  <div>    
    <label data-bind="text: text"></label>
    <input name="something" type="radio" data-bind="checked: $parent.selectedAnswer, value: value"></input>    
  </div>
</div>
<div>
The selected answer is:<span data-bind="text: selectedAnswer"></span>
</div>
</div>

这是相关的JavaScript

 var model = {
  questions: ko.observableArray(),
  };
var q1 = {
  descr: 'Do you like JS?',
  selectedAnswer: ko.observable('200'), // Initially, select No (200)
  answers: [
    {text:'Yes', value:'100'},
    {text:'No', value:'200'}
  ],
}
model.questions.push(q1);
ko.applyBindings(model);

问题:我希望根据selectedAnswer的初始值选择适当的单选按钮(在上述情况下为Radio Button No)。但这行不起作用。

我缺少什么?

这是一个奇怪的问题。我能够通过更改checkedvalue绑定的顺序来解决它:

<input name="something" type="radio" data-bind="value: value, checked: $parent.selectedAnswer" />

更新的小提琴


还有另一个修复程序。如果您切换到淘汰赛的最新版本,那么此问题就会消失。因此,我假设他们将其修复在版本2和3.0之间。

更新的小提琴

(另外,您可以简化foreach绑定到以下内容:data-bind="foreach : questions"

更新

这确实是一个错误。您可以通过 @user3297291的详细答案进行有关此信息的更多信息。

最新更新