使用淘汰赛foreach的单选按钮检查问题

时间:2014-08-22 12:01:57

标签: javascript html knockout.js

我在单选按钮上面运行foreach循环但不幸的是我无法检查任何单选按钮。这是我的观点

<div class="tab-pane" id="tab3">
    <div class="form-body">
        <div class="row">
            <div class="col-md-12">
                <h3 class="form-section">Qualification Factor</h3>
                <div class="row" data-bind="foreach: leadqualificlist">
                    //Here is my foreach loop
                    <div class="col-md-6">
                        <div class="form-group">
                            <div class="radio-list radio-list-padding">
                                <label class="radio-inline">
                                    <input type="radio" name="serious" value="0" data-bind="checked:Scoreschk, attr: { name: 'grp' + $data.Negativescore}" />
                                    Negative
                                </label>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

我在leadqualificlist observable数组中有列表。

1 个答案:

答案 0 :(得分:1)

单选按钮的行为与复选框不同,请参阅documentation

  

对于单选按钮,当且仅当参数值等于单选按钮节点的value属性或checkedValue参数指定的值时,KO才会设置要检查的元素。 &LT; ...&GT;当用户更改选择了哪个单选按钮时,KO会将您的模型属性设置为等于所选单选按钮的值。

所以,有了这个说,你不能为你的checkboxex设置不同的名称(使用attr绑定),但是应该在绑定中设置值,如下所示:

...
<input type="radio" name="serious" data-bind="value: Scoreschk, checked:$parent.selectedScoreCheck" />
...

现在您的视图模型应如下所示:

function ViewModel() {
    var self = this;
    self.leadqualificlist = ko.observableArray([new Qualification(0, 5),
                                          new Qualification(1, 2),
                                          new Qualification(2, 1)]);
    self.selectedScoreCheck = ko.observable("2"); // Note here must be string!
}

资格是:

function Qualification(scoreCheck, negativeScore) {
    this.Scoreschk = scoreCheck;
    this.Negativescore = negativeScore;
}

请参阅demo