2013-06-11 2 views
5

Существует ли установленная конвенция о декларации контроллеров? (Или любая форма конфигурации на уровне модуля).Угловая конвенция для декларирования контроллеров

Я наблюдал два различных подхода в использовании:

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

против

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

Существуют ли какие-либо преимущества между этими двумя подходами? Кроме того, существует предпочтительное (или новое) соглашение?

Меня особенно интересуют преимущества нетривиальных приложений со многими модулями, где объявления контроллеров и модулей могут охватывать многие файлы.

+0

Я просто хочу сказать, второй метод, который вы дали, как правило, используется в jfiddles для примеров, и ответ Терри гораздо более ориентирован на реальное приложение. –

ответ

6

Лично я следующие (причины после):

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

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

Причина:

  • Я стараюсь избегать глобального масштаб
  • Redundantly объявления зависимостей строковых эквивалентов позволяет безопасно Минимизировать ваш код
  • Это согласованный, чистый и вся история есть. Например. с app.something вы не знаете, что такое app, с `angular.module ('myApp'). Что-то 'это довольно очевидно, что это такое.

Редактировать: Просто вспомнил прохладный видео, которое я видел на этой самой теме некоторое время назад - http://www.egghead.io/video/tTihyXaz4Bo. Если вы не проверили сайт Джона, я настоятельно рекомендую его. Я был настолько впечатлен его видео, которое я пожертвовал, и вам тоже нужно!

+0

Я также использую этот метод. – finishingmove

+0

Это выглядит хорошо, но почему вы объявляете angular.module в первую очередь? – bsiddiqui

+1

@bsiddiqui Я полагаю, что для ввода зависимостей, таких как 'angular.module ('myApp', ['ui.bootstrap']),'. –

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]); 
Смежные вопросы