Zum Beispiel so
app.controller('myCtrl', function($scope, $rootScope) {
// 将$rootScope改成其他名字就不行了。
$scope.names = ["Emil", "Tobias", "Linus"];
$rootScope.lastname = "Refsnes";
});
Woher weiß Angular, dass mein zweiter Parameter $rootScope erfordert?
因为 AngularJS 提供两种注入方式。一种叫 implicit dependency injection(隐式依赖注入),一种叫 explicit dependency injection(显式依赖注入)。
你的代码中,使用的是第一种,隐式依赖注入:
由于
$scope
和$rootScope
都是 AngularJS 的 built-in service,因此 AngularJS 可以找到你想要注入的东西。但如果你改成rootScope
,这样 AngularJS 就从自己的框架中找不到了。如果使用显式依赖注入,就是这样:
这样 AngularJS 就会根据显式声明的
$scope
和$rootScope
去找。那么你在匿名函数的参数里,设置成什么都没关系。注意先后顺序就好。或者,你也可以通过手动调用
$inject
来实现。就像这样:详情请参考文档:https://docs.angularjs.org/gu...
Dependency Annotation 那一部分。
文档中同样提醒了你,如果你打算压缩代码,那就不要使用隐式依赖注入。