<input type="hidden" name="isActive" data-bind="value : booleanValue" />
在上面的代码中,booleanvalue包含布尔值(即)true或false。但保存它时会因为输入标记中的值绑定而转换为字符串。
答案 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。