1

在 angularJS注入器的文档中,$injector一些代码使用了injector. 我很困惑。这两者之间有什么区别,在哪里使用它们的合适地方?我对$scope和也有同样的问题scope

4

1 回答 1

2

当您想使用injector,scope或任何其他构建在 angularjs 提供程序中作为其他服务的依赖项时,您需要在它们前面加上前缀,$因为 Angular 按照惯例注册所有带有$前缀的构建提供程序,因此scope注册为$scope, injectoras$injector等。

当 Angular 实例化对象(使用注入器 btw)时,它会检查依赖项对象有什么(因为它需要注入它们),并且它的完成方式是检查该对象的构造函数的变量名称,这就是为什么正确命名变量如此重要的原因否则你会得到错误未知的提供者......

当您按以下方式检索注射器时:

var injector = angular.injector(['gaad', 'components']);

您不使用 $ 前缀,因为它是普通变量,实际上您可以随意调用它(包括 $injector)。

当您想将注入器作为依赖项时,您需要将其命名为:

angular.module('app').factory('$exceptionHandler', function($injector) {
  ...
});

或(使用 angularjs 脚本的缩小时需要约定):

angular.module('app').factory('$exceptionHandler', ['$injector', function(anyNameYouWant)   {
  ...
}]);

作用域类似,在指令中的链接函数中使用时:

 link: function(scope, element, attr) {
 }

您不必将其称为 $scope,因为这里没有注入任何内容。它只是函数参数之一。您可以随心所欲地调用它,但这里的约定是使用scope$scope区分注入作用域和何时用作参数的情况。

于 2013-08-05T20:29:48.507 回答