我已经看到了一些可以立即在提供商中使用角度服务的情况,例如:
.module('yea.buddy', [
'ui-translate'
])
.config(function($translateProvider) { ... })
与
.module('yea.buddy.two', [
'some-module'
])
.config(['some-module-service', function(someModuleService) { ... }])
两者之间的区别是什么?什么时候隐含资源,不需要方括号表示法?
编辑:我有一个存在混淆的实例,我问,因为我不想打破缩小。
答案 0 :(得分:0)
在模块中,例如angular.module(' app',[]);方括号用于依赖模块。如果您有任何依赖性,这是强制性的,无论您是否要缩小,都必须包括在内。
要创建任何控制器,服务,指令和过滤器,您必须提供相应的依赖性(如果要缩小)。如果你不想缩小它是可选的
如果是angular.module(' app',[])。config(),它与第2项相同,这意味着如果你不打算缩小它是可选的
<强>加成:强>
为什么Angular需要?
让我们尝试理解角度检测从函数参数的依赖性。参数的排序是无用的。如果你可以改变任何参数的排序,它将没有任何问题。实际上,角度维护一个全局数组$ injector,它存储每个单独的实例,其中数组索引(对象属性)是您在创建服务或过滤器或任何其他组件时提供的名称。例如,您创建了一项服务
angular.module('app',[]).service('good', function(){
});
如此棱角分明
$injector['good'] = service/filter etc output
好的,回到主题。因此,当您可以尝试注入新创建的服务时,那就是“好”。在作为参数的控制器中,angular首先查找所有提供的参数并从$ injector [EACH_SINGLE_ARUGMENT]恢复其实例,即为您的案例$ injector [&#39; good&#39;]
但是当你缩小你的代码时,大多数时候它会缩小函数参数。例如,&#39; good&#39;将是&#39; a&#39; 。结果,角度无法检测到。这就是为什么角度使用这个技巧所以当你提供方形支撑的依赖性时,例如
app.controller(['good', function(good) {
}] );
angular从此数组中获取名称,因为minify脚本不会更改数组值。因为minify脚本通常会执行以下操作:
app.controller(['good', function(a) {
}] );
希望你能帮到你一点。