Knockout Radio Buttons最初不能被选中,而是映射到boolean

时间:2014-09-09 10:13:40

标签: knockout.js

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);
}

};

0 个答案:

没有答案