使用Angular格式化程序/解析器

时间:2016-06-10 20:47:23

标签: javascript angularjs angularjs-directive

似乎无法让Angular格式化程序和解析器工作:

app.js:

var itemApp = angular.module('itemApp', []);

itemApp.controller('ItemController', ['$scope',  function($scope) {

      $scope.some_value = 'abcEFG';

}]);

itemApp.directive('changeCase', function () {
    return {
          restrict: 'A',
          require: 'ngModel',
          link: function (scope, element, attrs, ngModel) {

            ngModel.$formatters.push(function(value){
              return value.toUpperCase();
            });

            ngModel.$parsers.push(function(value){
              return value.toLowerCase();
            });

          }
    };
});

view.html:

  <input ng-model="some_value" changeCase>

它没有工作 - 没有错误,输入或模型中的值没有任何反应。我是Angular的新手,无法弄清楚我是如何调试它的。

1 个答案:

答案 0 :(得分:1)

尝试写:

<input ng-model="some_value" change-case> //camel-case

angular docs

中对此进行了解释
  

规范化

     

Angular规范化元素的标记和属性名称   确定哪些元素与哪些指令匹配。我们通常会提到   通过其区分大小写的camelCase规范化名称来指示(例如   ngModel)。但是,由于HTML不区分大小写,我们参考   DOM中的指令通过小写形式,通常使用   DOM元素上的破折号分隔属性(例如ng-model)。

     

规范化过程如下:

     
      
  • 从元素/属性的前面剥离x-和数据。
  •   
  • 转换或_分隔名称为camelCase。
  •