完全卡在这上面了。查看一下,但令人难以置信的是,找不到其他任何可能超过两个单选按钮要求其值为布尔值的单选按钮。
给出如下视图:-

相应的knockout视图模型:
function driver(name, license, maindriver) {
var self = this;
self.DriverName = ko.observable(name);
self.License = ko.observable(license);
self.IsMainDriver = ko.observable(maindriver);
}我在使用'IsMainDriver‘的实际布尔值发布这些代码时遇到了各种各样的问题。这些选项中的任何一个都必须设置为true。其他参数必须设置为false。我尝试过对下面的html进行各种调整,但毫无进展。一些帖子说真/假被设置为字符串,例如"true“或"false”。我已经尝试了击倒可观察的扩展器,回调,但正如我所说的,到目前为止还没有起作用。有时我得到一个'on‘对于firebug中的'IsMainDriver’是无效的。到目前为止,我所做的最大努力就是使用一个自定义绑定,唯一的问题是,一旦'IsMainDriver‘被设置为true,它就再也不会被设置为false了,所以基本上,尽管在视图中只有一个被“选中”,但在发布时,多行的“IsMainDriver”都被设置为true (希望这是有意义的)。任何帮助都将不胜感激。
<td>
<input name="mainDriverGroup[]" type="radio" data-bind="checked: IsMainDriver, value:IsMainDriver()" class="required" data-val-required="Please choose the main driver." />
<span class="field-validation-valid" data-valmsg-for="mainDriverGroup[]" data-val-replace="true"></span>
</td>发布于 2013-07-25 04:04:44
我已经创建了有这个问题的最基本的jsfiddle。
由于您只有一个单选按钮,因此我创建了computed observable,用于将布尔值转换为适当的knockout和back值。
this.IsMainDriverFormatted = ko.computed({
read: function () {
if (self.IsMainDriver() === true) {
return 'on';
}
else {
return 'off';
}
},
write: function (value) {
if (value === 'on') {
self.IsMainDriver(true);
}
else {
self.IsMainDriver(false);
}
},
owner: this
});在视图中使用了“checked”绑定。
<input name="IsMainDriver" type="radio" data-bind="checked: IsMainDriverFormatted" />https://stackoverflow.com/questions/17837999
复制相似问题