onsa
2/21/2017 - 3:44 PM

ngModel filters / parsers

ngModel filters / parsers

module.directive('lowercase', function() {
  return {
    restrict: 'A',        //  better to have it as attribute since it's combined with ng-model anyway
    require: 'ngModel',   //  need to inject ngModel
    //  main function with ngModel passed
    link: function(scope, element, attr, ngModel) {
      //  define a parser for input
      function fromUser(text) {
        return (text || '').toUpperCase();
      }
      //  define a filter for output
      function toUser(text) {
        return (text || '').toLowerCase();
      }
      //  register them by adding to existing parsers/filters
      ngModel.$parsers.unshift(fromUser);
      ngModel.$formatters.unshift(toUser);
    }
  };
});