何时使用'$ injector'并且只使用angularjs中的注入器?

时间:2013-08-05 20:20:26

标签: angularjs

在angularJS injector的文档中,部分代码使用$injector,而某些代码仅使用injector。我很迷惑。这两者之间有什么区别,哪些地方适合使用它们?我对$scopescope也有同样的问题。

1 个答案:

答案 0 :(得分:2)

当您想要使用injectorscope或angularjs提供程序中的任何其他内置作为其他服务的依赖项时,您需要使用$作为前缀,因为会议注册的角度为全局使用$前缀构建提供商,因此scope注册为$scopeinjector注册为$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函数中使用时:

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

你不必将它称为$ scope,因为这里没有注入任何东西。它只是功能参数之一。您可以随意调用它,但这里的约定是使用scope而不是$scope来区分注入范围和何时用作参数的情况。