Я пытаюсь написать директиву, которая автоматически форматирует число в <input>
, но модель не отформатирована. Как работать, это нормально, при загрузке значение на входе отображается как 1 000 000 и 1000000 в контроллере, однако при вводе только ngModel.$parsers
срабатывает функция. Единственный раз, когда ngModel.$formatters
огонь, когда директива загружается и, если значение равно 0.Формат входного значения в Angularjs
Как я могу заставить его работать на нажатие клавиши (я пытался связывание с/KeyUp при нажатии на кнопку, но она не работает) ,
Вот мой код:
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 || ''));
});
}
};
}]);
Именно то, что мне было нужно, спасибо! –
Любые идеи, почему синтаксический анализатор позже в цепочке прерывает форматирование? – Gepsens
@ Gepsens вы можете объяснить, что вы имеете в виду под парсером позже в цепочке? –