在为视图转换数据时,我应该何时介绍ngModelController。$ formatter的复杂性?
换句话说,在以下(人为设想的)例子中,资本化者比资本化者B更好吗? ' 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();
}
}
}
})
答案 0 :(得分:1)
我认为你不是在“增加复杂性”。无论您使用哪种功能,都会引入NgModelController。我认为这样做的原因很少超出$ validator管道。我发现过滤器可以做很多事情,可能会试图使用$ formatters管道。
那说,有用,我认为放置逻辑的最合适的地方是$ parsers或$ formatters数组。