【问题标题】:how to activate radio button如何激活单选按钮
【发布时间】:2014-01-07 15:30:47
【问题描述】:

谁能帮我激活第一个单选按钮作为标准

这是我的代码

<div>Wiederholung</div>
<div data-bind="foreach:answers">
        <label>
            <input type="radio" name="wiederholung" data-bind="click: $root.setChosenAnswer" />
            <span data-bind="text: name"></span>
        </label>
        <br />
</div>
<pre data-bind="text: JSON.stringify(ko.toJS($root), null, 2)"></pre>

js:

function Question() {
    var self = this;
    this.answers = ko.observableArray([
        new Answer("Nie", true),
        new Answer("Täglich", false),
        new Answer("Wöchentlich", false)]);

    this.setChosenAnswer = function(wahl) {
        if (wahl !== self.userAnswer()) {
            ko.utils.arrayForEach(self.answers(), function(answer)  {
                answer.isChosen(wahl === answer); 
            });

            self.userAnswer(wahl);           
        }
        return true;
    };

    this.userAnswer = ko.observable();

    this.userAnswer.subscribe(function(newValue) {
        alert("Ich moechte mein Termin " + this.userAnswer().name() + " Wiederholen");
    }, this);
}

function Answer(name, isChosen) {
    this.name = ko.observable(name);
    this.isChosen = ko.observable(isChosen);
}

ko.applyBindings(new Question());

demo

【问题讨论】:

    标签: knockout.js radio-button


    【解决方案1】:

    在 html 中试试这个

    <input type="radio" name="wiederholung" data-bind="value: $data.name, checked: $root.defaultChecked, click: $root.setChosenAnswer" />

    在js中

    this.defaultChecked = "Nie";

    【讨论】:

      【解决方案2】:

      您可以使用 $index() 函数来确定数组中项目的索引,如下所示:

      <input type="radio" name="wiederholung" data-bind="click: $root.setChosenAnswer, attr: {checked: $index()==0 }" />
      

      但它适用于淘汰赛 2.1 及更高版本,而在您的演示中您使用的是 2.0。

      【讨论】:

        【解决方案3】:

        来自"checked" binding documentation

        对于单选按钮,KO 将设置要检查的元素当且仅 如果参数值等于单选按钮节点的 value 属性 或checkedValue参数指定的值。

        所以你需要:

        1. 更改您的radio 元素标记以包含value="true",因为如果您有true,您希望它被选中。
        2. 更改您的 setChosenAnswer 函数以返回字符串值 "true""false"

        您也可以查看SO question 在 KnockoutJS 中的无线电绑定

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-06-27
          • 2014-12-12
          • 1970-01-01
          • 2012-02-19
          • 1970-01-01
          • 2010-12-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多