9

我觉得真的很愚蠢,但不能让它工作:)

http://jsfiddle.net/btkmR/

我做了这个简单的 Fiddle 只是为了证明我在我的大项目中没有遗漏任何东西。

HTML:

<div>
    Preferred flavor
    <div><input type="radio" name="flavorGroup" data-bind="checked: cherryOn" /> Cherry</div>
    <div><input type="radio" name="flavorGroup" data-bind="checked: almondOn" /> Almond</div>
    <div><input type="radio" name="flavorGroup" data-bind="checked: mgOn" /> Monosodium Glutamate</div>
</div>

JS:

var viewModel = {
    cherryOn: ko.observable(true);
    almondOn: ko.observable(false);
    mgOn: ko.observable(false);
};

ko.applyBindings(viewModel);

我希望Cherry在开始时看到被选中..

4

3 回答 3

22

来自 Knockout 的文档(http://knockoutjs.com/documentation/checked-binding.html):

对于单选按钮,当且仅当参数值等于单选按钮节点的 value 属性时,KO 才会设置要检查的元素。

示例:http: //jsfiddle.net/btkmR/2/

<div>
    Preferred flavor
    <div><input type="radio" name="flavorGroup" value="cherry" data-bind="checked: flavor" /> Cherry</div>
    <div><input type="radio" name="flavorGroup" value="almond"  data-bind="checked: flavor" /> Almond</div>
    <div><input type="radio" name="flavorGroup" value="Monosodium"  data-bind="checked: flavor" /> Monosodium Glutamate</div>
</div>

var viewModel = {
    flavor: ko.observable("cherry")
};

ko.applyBindings(viewModel);
于 2013-04-18T19:11:32.720 回答
13

对于那些像我一样正在努力让它与动态绑定的无线电组名称和值一起工作的人,请注意data-bind.

以下将不起作用,因为value并且在之后name绑定: checked

<input 
    type="radio" 
    data-bind="
        checked: $parent.correctAnswerId, 
        attr: {name: 'correctAnswerFor' + $parent.id, value: id}
    "
/>

正确的顺序是:

        attr: {name: 'correctAnswerFor' + $parent.id, value: id},
        checked: $parent.correctAnswerId
于 2013-09-14T13:13:54.907 回答
0

我也有一个非常有趣的问题。如果您的单选输入值是数字并且您的模型可观察对象中有整数 - 将不会选择单选按钮。如果您将可观察值更新为“1”(数字作为字符串),那么它可以工作。不是很方便...

于 2021-04-22T15:26:28.143 回答