Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 什么';在ngModelController.$formatter中转换数据与在ngModelController.$render中转换数据的区别是什么?_Angularjs_Angular Ngmodel - Fatal编程技术网

Angularjs 什么';在ngModelController.$formatter中转换数据与在ngModelController.$render中转换数据的区别是什么?

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

在为视图转换数据时,我应该在什么时候介绍ngModelController.$formatter的复杂性

换句话说,在下面(人为)的例子中,CapitalRa比CapitalRb好吗“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();
      }
    }
  }
})

请参阅以下工作示例:

我认为您并没有以任何方式“增加复杂性”。无论您使用哪种功能,都会引入NgModelController。我认为这样做的原因除了$validator管道之外很少。我发现过滤器可以做很多事情,人们可能会倾向于使用$formatters管道

也就是说,有一些用途,我认为最适合放置逻辑的地方是$parsers或$formatters数组