2014-09-28 2 views
2

Я использую директиву Angular, которая форматирует номера полей ввода запятыми. Я также хотел бы, чтобы этот фильтр автоматически вставлял десятичное значение для центов. Каждый номер всегда будет иметь центов. Например, если я хотел поставить $ 1,000.00 в поле ввода я бы типа 100000. я сделал plunkr, но не могу получить угловое работаяКак автоматически вставлять десятичные числа в поле ввода

plunkr

app.directive('format', ['$filter', function ($filter) { 
return { 
    require: '?ngModel', 
    link: function (scope, elem, attrs, ctrl) { 
     if (!ctrl) return; 


     ctrl.$formatters.unshift(function (a) { 
      return $filter(attrs.format)(ctrl.$modelValue) 
     }); 


     ctrl.$parsers.unshift(function (viewValue) { 
      var plainNumber = viewValue.replace(/[^\d|\-+|\.+]/g, ''); 
      elem.val($filter('number')(plainNumber)); 
      return plainNumber; 
     }); 
    } 
}; 
}]); 

ответ

3

Возможно, как это?

ctrl.$parsers.unshift(function (viewValue) { 
    var plainNumber = viewValue.replace(/[^\d|\-+]/g, ''); //replace even dot and comma 
    elem.val($filter('number')(plainNumber/100 , 2)); //use number filter with 2 decimal places and divide the number by 100 
    return plainNumber; 
}); 

Plnkr