我可以禁用参数模式匹配吗?

时间:2016-04-27 18:41:07

标签: javascript angularjs dependency-injection

Angular有一个功能,在某些情况下,它会尝试自动将参数与值匹配。 IE:

angular.module("foo").controller(function($scope){
  //Angular will automatically fill in the value of $scope
}

当处理缩小时,这当然会遇到问题,这就是我们使用数组语法的原因。

是否可以禁用Angular的此功能?我问,因为我最近有一个错误,我的一些代码是以未明确的形式工作,但是没有缩小,根本原因最终成为一个意外被Angular自动填充的变量。

由于我知道我的所有代码都是(或者至少应该)使用数组语法编写,我想禁用此功能,以便我可以强制删除任何其他隐藏的错误。

1 个答案:

答案 0 :(得分:2)

是的,并且启用了严格依赖注入,它被称为显式注入

angular.module("foo").controller("SomeController", ["$scope", function($scope){
  //Angular will automatically fill in the value of $scope
}]);

...或:

 function SomeController($scope){
      //Angular will automatically fill in the value of $scope
  }

  SomeController.$inject = ["$scope"];
  angular.module("foo").controller("SomeController", SomeController);
  

因为我知道我的所有代码都是(或者至少应该)使用   数组语法我想禁用此功能,以便我可以   强迫任何其他隐藏的错误。

您可以使用严格依赖注入禁用自动参数匹配。请参阅Angular的production guide以获取更多详细信息:

<div ng-app="myApp" ng-strict-di>
  <!-- your app here -->
</div>

...或:

angular.bootstrap(document, ['myApp'], {
  strictDi: true
});