<input type="checkbox" data-bind="value : 1, checked: FgActive" />
我希望 FgActive 为 1 和 0 而不是真假。有没有一种简单的方法可以做到这一点?
<input type="checkbox" data-bind="value : 1, checked: FgActive" />
我希望 FgActive 为 1 和 0 而不是真假。有没有一种简单的方法可以做到这一点?
最简单的事情是创建一个ko.computed
将检查的布尔绑定转换为/从 1/0 数字。
self.fgActiveNumeric = ko.computed({
read: function () {
return self.fgActive() == 1 ? true : false;
},
write: function (newValue) {
self.fgActive(newValue ? 1 : 0);
}
});
像普通checked
绑定一样使用它:
<input type='checkbox' data-bind='checked: fgActiveNumeric' />
您可以在此处阅读有关此技术的更多信息:http: //knockoutjs.com/documentation/computedObservables.html
我遇到了一个解决方案。在检查绑定之后,我创建了一个适用于更新的自定义绑定。不知道是否是最好的解决方案,但工作得很好。
ko.bindingHandlers.NumChecked = {
update: function (element, valueAccesor) {
var func = valueAccesor();
if (typeof (func) == 'function' && func() == true)
func(1);
else if ((typeof (func) == 'function'))
func(0);
}
};
<input type="checkbox" data-bind="NumChecked: FgActive, checked: FgActive" />
我就是这样做的,使用 jQuery:
var myVal = ( $('#myCheckbox').is(':checked') ) ? 1 : 0;
alert('myVal is: ' +myVal); //alerts 1 if checked, 0 if not checked