function SchemeViewModel(data) {
var self = this;
ko.mapping.fromJS(data, {}, self);
}
我有上面的视图模型,它将用于处于编辑模式的页面,在这种情况下,来自服务器的模型将具有映射到复选框或初始模式的布尔值,这将得到相同的具有相同布尔值的物体。
典型的复选框如下所示
<input type="radio" name="mygroup1" value="Off" data-bind="radioOnOffBoolean: IsBasicPayment" />
我的问题是,对于新的应用程序,我需要取消选中复选框,即既不是true也不是flase,但总是映射为false,即使在未设置observable中也是如此。
我正在使用以下绑定处理程序。
ko.bindingHandlers.radioOnOffBoolean = {
init: function (element, valueAccessor, allBindingsAccessor) {
var value = valueAccessor();
var newValueAccessor = function () {
return ko.dependentObservable({
read: value,
write: function (newValue) {
value(newValue === "On");
}
});
};
ko.bindingHandlers.checked.init(element, newValueAccessor, allBindingsAccessor);
},
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
var newValueAccessor = function () {
return value ? "On" : "Off";
}
ko.bindingHandlers.checked.update(element, newValueAccessor);
}
};