Angularjs 角度依赖,为什么有两种不同的方式?

Angularjs 角度依赖,为什么有两种不同的方式?,angularjs,dependency-injection,Angularjs,Dependency Injection,我刚刚开始学习AngularJS,我不知道为什么我一直看到以下两种不同的方式。只有第一种方法对我有效,如果我尝试第二种方法,依赖项就不起作用。区别是什么?哪个是正确的 var app = angular.module('MainCtrl', []); // Option 1 app.controller('MainController',['$scope','$cookies','$location', function($scope, $cookies, $location) { i

我刚刚开始学习AngularJS,我不知道为什么我一直看到以下两种不同的方式。只有第一种方法对我有效,如果我尝试第二种方法,依赖项就不起作用。区别是什么?哪个是正确的

var app = angular.module('MainCtrl', []);

// Option 1
app.controller('MainController',['$scope','$cookies','$location', function($scope, $cookies, $location) {
    if (!$cookies.get('token')) {
        $location.path('/login');
    }
}]);

// Option 2
app.controller('MainController', function($scope, $cookies, $location) {
    if (!$cookies.get('token')) {
        $location.path('/login');
    }
});

如果您正确设置了应用程序,两个版本都应该可以工作

选项1使用,这就是为什么要传递将注入控制器的对象的名称

严格DI将允许代码缩减,您可以根据需要命名传递给控制器函数的参数(参见示例)

您必须通过传递可选对象在引导调用中声明严格的依赖项注入:

angular.bootstrap(window.document, ['appModule'], {
    strictDi: true
});
选项2不使用严格DI(默认行为):作为参数注入的名称必须反映框架使用的名称

选项1-严格依赖项注入
var-app=angular.module('appModule',[]);
//选项1-严格依赖项注入
app.controller('MyController',['$scope',函数(myScope){
this.greeting='Hello World!';
myScope.test='范围属性';
}]);
angular.bootstrap(window.document,['appModule']{
史翠蒂:是的
}); // 通过严格的依赖注入引导AngularJS应用程序
严格依赖注入
{{myCtrl.greeting}}

{{test}}


“包括”不是正确的术语。这是注释。现在还不清楚“第二种不包括模块的方式”是什么意思,但我想这意味着依赖项不能被注入。@estus谢谢,我把它编辑成“依赖项”很好地澄清了这一点。非常感谢。