完全坚持这一点。阅读,但令人难以置信的是找不到任何其他可能超过两个radiobuttons需要其值为布尔值的人。
鉴于这样的观点: -
相应的淘汰视图模型: -
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进行各种调整,但我没有到达任何地方。有些帖子说的是将真/假设置为字符串,例如“对或错”。我已经尝试了淘汰可观察的扩展器,回调,但正如我所说,到目前为止没有任何工作。有时我得到一个'on'对于firebug中的'IsMainDriver'无效。到目前为止我所做的最好的努力是使用自定义绑定,其中唯一的问题是'IsMainDriver'observable在设置为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>
答案 0 :(得分:0)
我已经根据问题创建了基础jsfiddle。
由于你只有一个单选按钮,我创建了计算的observable,它将布尔值转换为适当的敲除和返回值。
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" />