0

我见过一些你可以立即在提供者中使用角度服务的例子,例如:

.module('yea.buddy', [
    'ui-translate'
])
.config(function($translateProvider) { ... })

相对

.module('yea.buddy.two', [
    'some-module'
])
.config(['some-module-service', function(someModuleService) { ... }])

两者有什么区别?什么时候隐含资源,不需要方括号符号?

编辑:我有一个例子有一些混乱,我问是因为我不想破坏缩小。

4

1 回答 1

0
  1. 在模块中,例如 angular.module('app',[]); 方括号用于依赖模块。如果您有任何依赖项,则这是强制性的,您必须在此处包括您是否要缩小或不缩小。

  2. 要创建任何控制器、服务、指令和过滤器,如果要缩小,您必须提供各自的依赖关系。如果您不想缩小它是可选的

  3. 在 angular.module('app',[]).config() 的情况下,它与第 2 项相同,这意味着如果您不打算缩小它是可选的

奖金:

为什么需要 Angular?

让我们尝试了解角度如何从函数参数中检测依赖关系。参数的顺序是无用的。如果您可以更改任何参数的顺序,它将毫无问题地工作。实际上,角度维护一个全局数组 $injector ,它在其中存储每个实例,其中数组索引(对象属性)是您在创建服务或过滤器或任何其他组件时提供的名称。例如,您创建了一个服务

  angular.module('app',[]).service('good', function(){

  });

所以有棱有角

$injector['good'] = service/filter etc output 

好吧,让我们回到主题。因此,当您可以尝试将新创建的服务“好”作为参数注入控制器时,角度首先找出所有提供的参数并从 $injector[EACH_SINGLE_ARUGMENT] 恢复其实例,即针对您的情况 $injector['good']

但是当你缩小你的代码时,大多数时候它会缩小函数参数。例如, 'good' 将是 'a' 。结果 angular 无法检测到。这就是为什么 Angular 使用这个技巧,所以当你在方括号中提供你的依赖时,例如

app.controller(['good', function(good) {
 }] );

angular 使用这个数组的名称,因为 minify 脚本不会更改数组值。因为缩小脚本通常会执行以下操作:

  app.controller(['good', function(a) {
   }] );

希望对您有所帮助。

于 2015-04-02T05:26:56.797 回答