2013-06-11 21 views
5

Esiste una convenzione stabilita in merito alla dichiarazione dei controllori? (O qualsiasi forma di configurazione a livello di modulo). ciConvenzione angolare per la dichiarazione dei controllori

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

vs

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

sono eventuali benefici tra i due approcci:

ho osservato due approcci differenti in uso? Inoltre, c'è una convenzione preferita (o emergente)?

Sono specificamente interessato a vantaggi per applicazioni non banali con molti moduli, in cui le dichiarazioni di controller e moduli possono estendersi su molti file.

+0

Voglio solo citare il secondo metodo che hai dato è tipicamente utilizzato in jfiddles per esempi e la risposta di Terry molto più orientata per una vera app. –

risposta

6

Personalmente devo fare i seguenti (motivi dopo):

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

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

motivi:

  • cerco di evitare la portata globale
  • ridondante dichiarando dipendenze con equivalenti di stringa consente di minimizzazione dei in modo sicuro il tuo codice
  • È coerente, pulito e l'intera storia è lì. Per esempio. con app.something non si sa cosa sia app con `angular.module ('miaApp'). qualcosa 'è abbastanza ovvio di cosa si tratta.

Edit: appena ricordato un bel video che ho visto su questo argomento qualche tempo fa - http://www.egghead.io/video/tTihyXaz4Bo. Se non hai controllato il sito di John, lo consiglio vivamente. Sono rimasto così impressionato dai suoi video che ho donato, e anche tu dovresti!

+0

Io uso anche questo metodo. – finishingmove

+0

questo sembra buono, ma perché stai dichiarando angular.module all'inizio? – bsiddiqui

+1

@bsiddiqui Credo di iniettare dipendenze come 'angular.module ('myApp', ['ui.bootstrap']);'. –

2

Personalmente, trovo che sia un po 'più pulito in questo modo:

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

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

Oppure, ancora più meglio:

var Controllers = {}; 

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

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