需要在html中发送布尔值

时间:2014-01-24 07:51:17

标签: html css knockout.js

<input type="hidden" name="isActive" data-bind="value : booleanValue" />

在上面的代码中,booleanvalue包含布尔值(即)true或false。但保存它时会因为输入标记中的值绑定而转换为字符串。

1 个答案:

答案 0 :(得分:2)

这就是淘汰赛的工作原理,但你可以创建一个扩展器来完成字符串 - &gt;布尔对话给你。已有一个数字转换示例in the documentation您可以轻松修改的内容:

ko.extenders.boolean = function(target, precision) {
    var result = ko.computed({
        write: function(newValue) {
            var current = target(),               
                valueToWrite = typeof newValue == 'string' ? 
                               newValue.toLowerCase() == "true" : 
                               newValue;
            if (valueToWrite !== current) {
                target(valueToWrite);
            } else {
                if (newValue !== current) {
                    target.notifySubscribers(valueToWrite);
                }
            }
        }
    }).extend({ notify: 'always' });    

    result(target());
    return result;
};

您可以将其用于:

ko.applyBindings({
    booleanValue: ko.observable(true).extend({boolean: true})
});

演示JSFiddle