Javascript AngularJS-模块的控制器附件

Javascript AngularJS-模块的控制器附件,javascript,angularjs,Javascript,Angularjs,刚开始和angularJS打交道。我注意到有几种方法可以创建控制器,一种是只声明js函数的方法,另一种是通过模块创建控制器 关键区别是什么 i、 e 对 var myApp = angular.module('myApp',[]); myApp.controller('GreetingController', ['$scope', function($scope) { $scope.greeting = 'Hola!'; }]); 使用第一种方法,可以跨具有不同作用域的模块重用控制器吗

刚开始和angularJS打交道。我注意到有几种方法可以创建控制器,一种是只声明js函数的方法,另一种是通过模块创建控制器

关键区别是什么

i、 e

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

myApp.controller('GreetingController', ['$scope', function($scope) {
  $scope.greeting = 'Hola!';
}]);
使用第一种方法,可以跨具有不同作用域的模块重用控制器吗

非常感谢

问候

来自文件:

虽然Angular允许您在 全局范围,不建议这样做

关键的区别在于,您永远不会使用第一个;)至于重用:您可以将这两种方法结合起来:

function GreetingController($scope) {
  $scope.greeting = 'Hola!';
}

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

myApp.controller('GreetingController', ['$scope', GreetingController]);

谢谢,那么您仍然在创建具有全局范围的控制器?为什么第一个魔咒如此糟糕?试图理解差异,还是只是重复使用?@user1754307不完全如此。本质上,这是第二种方法,其中函数声明被删除。这使得它可以重复使用。当你缩小你的代码时,第一个开始变得一团糟。它不会再工作了。这不是组合解决方案的问题。
function GreetingController($scope) {
  $scope.greeting = 'Hola!';
}

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

myApp.controller('GreetingController', ['$scope', GreetingController]);