Ваш лучший вариант - использовать ng-model-options
, чтобы измениться при обновлении ввода (и, таким образом, запустить ваш форматтер).
Это тот случай, когда вы жертвуете живым переформатированием в пользу удобства использования формы.
Либо используйте
<input type="text" ng-model="zipcode" ng-model-options="{ updateOn: 'blur' }" format-zip-code />
для обновления, когда пользователь покидает поле, либо
<input type="text" ng-model="zipcode" ng-model-options="{ debounce: 1000 }" format-zip-code />
для обновления после 1s
.Этот параметр будет по-прежнему отображать курсор, перемещающийся в конец ввода после обновления, но не сразу.