>>>I tested using both positive and negative priority and your directive always ran first. I *did* get it to work by changing your formatter to:
>>> function bind() {
>>> return ngModel.$formatters.unshift(function (value) {
>>> return format(value);
>>> });
>>> }
Don't know why the priority approach didn't work but this shows that your formatter needs to be first in the $formatters array.....
>>
>>There is some activity in the issue I raised
>>
>>
https://github.com/angular/angular.js/issues/11157#issuecomment-75706528>>
>>and I also posted a new plnkr
>>
>>
http://plnkr.co/edit/z1BWMoPmnsCZlAUra0os?p=preview>
>Using Priority and push gives exactly the same formatter execution order (ie angulars directive followed by yours). Behaviour is the same in both cases.
>What exactly is your problem with this code ?
>BTW you should probably also add 'event.preventDefault()' in your keydown event handler - simply returning true/false only works in IE.
>
>Also you need to prevent multiple decimal points:
if (isDecimal(event.keyCode)) {
> if (event.srcElement.value.indexOf('.') !== -1) {
> event.preventDefault();
> return false;
> }
> }
(or use a regex)
Thanks, I'll make adjustements.
If it's not broken, fix it until it is.
My Blog