チェックボックスバインディングのモデルをブール値ではなく数値に設定するディレクティブがあります。
module.directive('sjNumber', function() {
return {
require: 'ngModel',
link: function($scope, $element, $attribute, $modelController) {
$modelController.$parsers.push(function(viewValue) {
return viewValue + 0;
});
}
};
});
ただし、これを使用すると、チェックボックスの値を変更した後、モデルは常にtrue
orではなくorに設定されます。false
1
0
掘り下げてみたところ、関数の実行後link
にAngularの組み込みチェックボックスパーサーが挿入され、その時点で$parsers
配列が空であることがわかりました。(組み込みのパーサーはcheckboxInputType
、AngularJS v1.2.0-rc.3 の 14945 行に追加されています。)
どうすればこれを機能させることができますか?