关于控制器定义。这有什么区别...
angular.module('myApp', ['ui.bootstrap']);
function CarouselCtrl($scope) {
...
}
这......
var myAppModule = angular.module('myApp', ['ui.bootstrap']);
myAppModule.controller('CarouselCtrl', function($scope){
...
}
似乎他们都可以访问ui.bootstrap。 如何将第一个CarouselCtrl函数连接到我的angular.module?
答案 0 :(得分:5)
第一个是全局功能。你不应该使用它。这是"连接"到你的模块,因为它连接到一切。
第二个是模块中声明的控制器。这很好,这是一种常用的方法。您可以拥有一个包含指令的模块,一个包含服务的模块等。More about organizing your application
最安全的选项是使用注释:
var myAppModule = angular.module('myApp', ['ui.bootstrap']);
myAppModule.controller('CarouselCtrl', [ '$scope', '$http', function($scope, $http){
...
}]);
正如Golo Roden在评论中指出的那样,你可以通过像这样引用控制器来避免全局变量:
angular.module('myApp').controller(...);
这样,应用程序可以在不中断的情况下缩小,如手册https://docs.angularjs.org/guide/di中所述 原因是依赖注入按名称查找组件。你可以缩小函数的名称,但数组中的值永远不会改变。数组中的顺序很重要。它与函数中的参数匹配1-1。