2016-06-10 31 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