首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Knockoutjs单选按钮无法选择默认选中

Knockoutjs单选按钮无法选择默认选中
EN

Stack Overflow用户
提问于 2016-10-21 21:56:41
回答 1查看 1.3K关注 0票数 2

我有一个可观察到的数组绑定到单选按钮,我想从其中选择一个默认值。我的问题是单选按钮没有被明显选中(我的意思是点丢失了)。下面是一个修改过的单选按钮绑定示例:

代码语言:javascript
运行
复制
[http://jsfiddle.net/FvZXj/302/][1]

因此,我将第二个选项(或其他选项设置为默认选项),我需要检查该选项。我错过了正确答案中的点。

请指点!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-22 00:51:30

你的小提琴使用的是一个旧版本的击倒(2.0)。您可以使用在3.x版本的敲除中引入的 binding。只需将checked绑定设置为$root.correctAnswer

代码语言:javascript
运行
复制
<input 
  type="radio" 
  name="uniqueQuestionName" 
  data-bind="checkedValue: $data,
    click: $root.setCorrectAnswer,
    checked: $root.correctAnswer" 
/>

演示:

代码语言:javascript
运行
复制
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);
代码语言:javascript
运行
复制
<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>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40185998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档