2016-02-26 47 views
1

什麼時候應該在爲視圖轉換數據時引入ngModelController。$ formatter的複雜性?

換句話說,在以下(做作)的例子中,capitalizerA比capitalizerB更好嗎? 'A'感覺更習慣,但我很難找到明顯的優勢。

var app = angular.module('capitalizerApp', []) 

app.controller('capitalizerCtrl', function($scope) { 
    $scope.name = 'jake'; 
}); 

/* 
* capitalizerA 
*/ 
app.directive('capitalizerA', function() { 
    return { 
    restrict: 'E', 
    require: 'ngModel', 
    link: function(scope, element, attrs, ngModelCtrl) { 
     let _capitalizerFormatter = function(value) { 
     return value.toUpperCase(); 
     } 

     ngModelCtrl.$formatters.push(_capitalizerFormatter); 

     ngModelCtrl.$render = function() { 
     scope.capsName = ngModelCtrl.$viewValue; 
     } 
    } 
    } 
}); 

/* 
* capitalizerB 
*/ 
app.directive('capitalizerB', function() { 
    return { 
    restrict: 'E', 
    require: 'ngModel', 
    link: function(scope, element, attrs, ngModelCtrl) { 
     ngModelCtrl.$render = function() { 
     scope.capsName = scope.name.toUpperCase(); 
     } 
    } 
    } 
}) 

請參見下面的工作例如:http://codepen.io/telekid/pen/oxNxPM?editors=1010

回答

1

我認爲你沒有「增加複雜性」兩種方式。無論您使用哪種功能,您都將引入NgModelController。我認爲這樣做的原因很少超過$ validator管道。我發現過濾器可以做很多事情,可能會試圖使用$ formatters管道。

也就是說,有一些用途,我認爲把邏輯放在最合適的位置是在$ parsers或$ formatters數組中。

相關問題