<input type="checkbox" data-bind="value : 1, checked: FgActive" />
FgActive を true と false ではなく 1 と 0 にしたい。それを行う簡単な方法はありますか?
<input type="checkbox" data-bind="value : 1, checked: FgActive" />
FgActive を true と false ではなく 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