我已经构建了一个页面,其中我有radiobuttons控制使用ko设置的内容。一切都工作正常,直到现在由于一些奇怪的原因(可能是我团队中某人的更新o k.o),控件无效。 为了找到错误,我使用了knockoutjs页面中的相同示例,以便于实现。 布局:
<div >
<div><input type="radio" name="flavorGroup" value="cherry" data-bind="checked: $root.spamFlavor" /> Cherry</div>
<div><input type="radio" name="flavorGroup" value="almond" data-bind="checked: $root.spamFlavor" /> Almond</div>
<div><input type="radio" name="flavorGroup" value="msg" data-bind="checked: $root.spamFlavor" /> Monosodium Glutamate</div>
</div>
<small data-bind="text: $root.spamFlavor"></small> @*this work fine*@
和我的viewmodel:
export var spamFlavor = ko.observable("almond");
正如您所看到的那样,radiobutton应该得到“杏仁”的值,但事实并非如此。检查我的viewmodel(在typescript中)的方法是使用我的视图查看控件什么工作正常。
目前我们正在使用knockout-2.3.0。知道我做错了吗?
答案 0 :(得分:0)
向我跳出的第一件事是你没有评估你的“已检查”的陈述是真还是假,这是选择你的无线电所需的。
尝试data-bind="checked: $root.spamFlavor() == 'almond'"
,它将评估true / false
答案 1 :(得分:0)
尝试将淘汰库从2.3.0更改为3.0.0。似乎存在处理辐射按钮的错误。使用jsfiddle示例
尝试此http://jsfiddle.net/qACa6/1/<div data-bind="foreach: items">
<input type="radio" name="group"
data-bind="checkedValue: $data, checked: $root.selectedItem" />
<span data-bind="text: foo"></span>
</div>
<div data-bind="text: ko.toJSON(selectedItem)" />
使用javascript部分
var ViewModel = function () {
this.items = ko.observableArray();
this.selectedItem = ko.observable();
var object1 = {foo: 1, anotherValue: ko.observable(1)}
var object2 = {foo: 2, anotherValue: ko.observable(2)}
this.items.push(object1);
this.items.push(object2);
this.selectedItem(object2);
};
var vm = new ViewModel();
ko.applyBindings(vm);
它不完全是你的代码,但似乎问题是一样的。只需更改淘汰库的版本......