声明控制器的Angular Convention

时间:2013-06-11 03:02:02

标签: angularjs

是否有关于控制器声明的既定惯例? (或任何形式的模块级配置)。

我观察到两种不同的使用方法:

var shoppingCartModule = angular.module('ShoppingCart',[])
shoppingCartModule.controller('CheckoutCtrl', function($scope) { ... });

VS

angular.module('ShoppingCart').controller('CheckoutCtrl', function($scope) { ... });

两种方法之间有什么好处吗?此外,是否有一个首选的(或新兴的)惯例?

我对具有许多模块的非平凡应用程序的好处特别感兴趣,其中控制器和模块的声明可能跨越许多文件。

2 个答案:

答案 0 :(得分:6)

我个人做以下事情(之后的原因):

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

angular.module('myApp').controller('myController', ['$dependency', 'anotherDependency',      
  function($dependency, anotherDependency) {
    ...
  }
]);

原因:

  • 我尽量避免全球范围
  • 冗余地声明与字符串等效项的依赖关系允许您安全地缩小代码
  • 这是一贯的,干净的,整个故事都在那里。例如。使用app.something你不知道app是什么,使用`angular.module('myApp')。有些东西'很明显是什么。

修改 :刚刚想起了我之前在这个话题上看到的很酷的视频 - http://www.egghead.io/video/tTihyXaz4Bo。如果您还没有查看John的网站,我强烈推荐它。我捐赠的视频给我留下了深刻印象,你也应该这样做!

答案 1 :(得分:2)

就我个人而言,我觉得这样有点干净:

angular.
  module('myApp').
  controller('myController', ['$dependency', 'anotherDependency', myAppController]);

function myAppController($dependency, anotherDependency) {
  ...
}

或者,更好:

var Controllers  = {};

Controllers .someController = function myAppController($dependency, anotherDependency) {
  ...
}

angular.
  module('myApp').
  controller('myController', ['$dependency', 'anotherDependency', Controllers .someController]);