如何在复选框的checked属性上绑定1/0而不是true / false

时间:2013-05-06 20:56:10

标签: checkbox knockout.js

<input type="checkbox" data-bind="value : 1, checked: FgActive" />

我希望FgActive为1和0而不是true和false。有一种简单的方法吗?

3 个答案:

答案 0 :(得分:4)

最简单的方法是创建一个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

See the Fiddle

答案 1 :(得分:2)

我遇到了一个解决方案。在检查绑定之后,我创建了一个自定义绑定,用于更新。不知道是否是最好的解决方案,但工作得很好。

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" />

答案 2 :(得分:0)

我就是这样做的,使用jQuery:

var myVal = ( $('#myCheckbox').is(':checked') ) ? 1 : 0;

alert('myVal is: ' +myVal); //alerts 1 if checked, 0 if not checked

jsFiddle Demo