Angularjs 什么';在ngModelController.$formatter中转换数据与在ngModelController.$render中转换数据的区别是什么?
在为视图转换数据时,我应该在什么时候介绍ngModelController.$formatter的复杂性 换句话说,在下面(人为)的例子中,CapitalRa比CapitalRb好吗“A”感觉更地道,但我很难找到明显的优势Angularjs 什么';在ngModelController.$formatter中转换数据与在ngModelController.$render中转换数据的区别是什么?,angularjs,angular-ngmodel,Angularjs,Angular Ngmodel,在为视图转换数据时,我应该在什么时候介绍ngModelController.$formatter的复杂性 换句话说,在下面(人为)的例子中,CapitalRa比CapitalRb好吗“A”感觉更地道,但我很难找到明显的优势 var app = angular.module('capitalizerApp', []) app.controller('capitalizerCtrl', function($scope) { $scope.name = 'jake'; }); /* * ca
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();
}
}
}
})
请参阅以下工作示例:我认为您并没有以任何方式“增加复杂性”。无论您使用哪种功能,都会引入NgModelController。我认为这样做的原因除了$validator管道之外很少。我发现过滤器可以做很多事情,人们可能会倾向于使用$formatters管道 也就是说,有一些用途,我认为最适合放置逻辑的地方是$parsers或$formatters数组