2016-06-10 50 views
1

似乎无法获得角格式化和解析工作:采用了棱角分明的格式化/解析器

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

[toUpperCase](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase)和[toLowerCase](HTTPS://显影剂。 mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase),并且所有字符串操作方法都不会操作字符串,它们会返回转换后的字符串。所以你会'返回value.toUpperCase()'等 –

+0

对不起,草率的示例代码。仍然不起作用,虽然 – Yarin

回答

1

尝试写:

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

这在angular docs

解释正常化

角正常化元素的标签和属性名 以确定哪些元素匹配该指令。我们通常将 指向其区分大小写的camelCase规范化名称(例如, ngModel)。但是,由于HTML不区分大小写,因此我们通过小写形式在DOM中引用 指令,通常使用 有关DOM元素(例如,ng-模型)的破折号分隔的属性。

归一化处理是如下:

  • 地带x和从元件/属性的前DATA-。
  • 将名称或_分隔的名称转换为camelCase。
+0

就是这样 - 谢谢你! – Yarin