javascript - Knockoutjs单选按钮无法选择默认选中

标签 javascript html knockout.js

我有一个绑定(bind)到单选按钮的可观察数组,我想从中选择一个默认值。我的问题是没有明显选中单选按钮(我的意思是缺少点)。这是单选按钮绑定(bind)的修改示例:

[http://jsfiddle.net/FvZXj/302/][1]

所以我设置了第二个(或任何默认选项),我需要看到该选项被选中。我错过了正确答案中的点。

请指教!

最佳答案

您的 fiddle 使用的是旧版本的 knockout (2.0)。您可以使用 checked binding这是在 3.x 版本的 knockout 中引入的。只需将 checked 绑定(bind)设置为 $root.correctAnswer:

<input 
  type="radio" 
  name="uniqueQuestionName" 
  data-bind="checkedValue: $data,
    click: $root.setCorrectAnswer,
    checked: $root.correctAnswer" 
/>

演示:

function Question() {
  var self = this;
  this.name = "My Question";

  var i = 0;
  this.answers = ko.observableArray([
    new Answer(++i, "Answer 1", false),
    new Answer(++i, "Answer 2", true),
    new Answer(++i, "Answer 3", false)
  ]);

  this.setCorrectAnswer = function(correct) {
    if (correct !== self.correctAnswer()) {
      ko.utils.arrayForEach(self.answers(), function(answer) {
        answer.isRight(correct === answer);
      });

      self.correctAnswer(correct);
    }
    return true;
  };

  this.correctAnswer = ko.observable();

  this.correctAnswer.subscribe(function(newValue) {
    alert("The correct answer to " + this.name + " is now " + this.correctAnswer().name());
  }, this);
}


function Answer(id, name, isRight) {

  this.id = ko.observable(id);
  this.name = ko.observable(name);
  this.isRight = ko.observable(isRight);
}

var question = new Question();
//Set default correct answer just for example
question.correctAnswer(question.answers()[1]);
ko.applyBindings(question);
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script>
<div data-bind="text:name"></div>
<div data-bind="foreach:answers">
  <label>
    <span data-bind="text: name"></span>
    <input type="radio" name="uniqueQuestionName" data-bind="checkedValue: $data,
        click: $root.setCorrectAnswer,
        checked: $root.correctAnswer" />
  </label>
  <br />
</div>

<hr/>

<pre data-bind="text: JSON.stringify(ko.toJS($root), null, 2)"></pre>

关于javascript - Knockoutjs单选按钮无法选择默认选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40185998/

相关文章:

javascript - JQuery Masonry 是怎么来的,当我在浏览器上单击 "back"时,它会将用户射回顶部?

javascript - 我怎样才能使用javascript加速这个导出数据功能

javascript - 如何使用 forEach 从数组中获取特定值

javascript - settimeout while audio.duration

html - css 网格元素上的粘性位置

javascript - 使用 mysql 行值在 html 中动态创建按钮

html - 阿拉伯语无法在 Internet Explorer 中正确呈现

javascript - 如果总计无效,则将字段文本和边框设置为红色

javascript - 从下拉菜单中选择项目

javascript - 如何访问任何 View 模型中的路由器状态 - Oracle JET