の数値を自動的にフォーマットするディレクティブを作成しようとしています<input>
が、モデルがフォーマットされていません。それを機能させることは問題ありません。ロード時に、入力の値がコントローラーに1,000,000および1000000として表示されますが、入力するとngModel.$parsers
関数のみが起動します。ngModel.$formatters
発火するのは、ディレクティブが読み込まれたときと値が 0 のときだけです。
キープレスで動作させるにはどうすればよいですか (キープレス/キーアップにバインドしようとしましたが、動作しません)。
これが私のコードです:
angular.module('myApp.directives', []).directive('filterInput', ['$filter', function($filter) {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ngModel) {
ngModel.$parsers.push(function fromUser(text) {
return parseInt(text.replace(",", ""));
});
ngModel.$formatters.push(function toUser(text) {
console.log($filter('number')(text));
return ($filter('number')(text || ''));
});
}
};
}]);