2013-06-11 11 views
5

Gibt es eine festgelegte Konvention bezüglich der Deklaration von Controllern? (Oder irgendeine Form der Konfiguration auf Modulebene).Angular Convention zur Deklaration von Controllern

Ich habe zwei verschiedene Ansätze für den Gebrauch:

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

vs

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

Sind alle Leistungen zwischen den beiden Ansätzen da? Gibt es auch eine bevorzugte (oder entstehende) Konvention?

Ich bin speziell interessiert an Vorteilen für nicht-triviale Anwendungen mit vielen Modulen, wobei Deklarationen von Controllern und Modulen viele Dateien umfassen können.

+0

Ich möchte nur die zweite Methode erwähnen Sie in der Regel verwendet wird, hat in JFiddles für Beispiele und Terrys Antwort viel mehr für eine echte App orientiert. –

Antwort

6

Persönlich habe ich die folgenden (Gründe nach):

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

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

Gründe:

  • ich versuchen zu vermeiden und die globale Reichweite
  • Redundant Abhängigkeiten mit String-Äquivalente deklarieren können Sie sicher minify Ihr Code
  • Es ist konsistent, sauber und die ganze Geschichte ist da. Z.B. mit app.something weißt du nicht was app ist, mit `angular.module ('myApp') .etwas 'ist es ziemlich offensichtlich was das ist.

bearbeiten: Nur ein cooles Video erinnerte ich mich an diesem Thema vor einiger Zeit gesehen - http://www.egghead.io/video/tTihyXaz4Bo. Wenn Sie Johns Website nicht ausgecheckt haben, empfehle ich es sehr. Ich war so beeindruckt von seinen Videos, die ich gespendet habe, und das solltest du auch!

+0

Ich benutze diese Methode auch. – finishingmove

+0

das sieht gut aus, aber warum deklarieren Sie angular.module oben zuerst? – bsiddiqui

+1

@bsiddiqui Ich glaube Abhängigkeiten wie 'angular.module ('myApp', ['ui.bootstrap']);'. –

2

Persönlich finde ich es ein wenig sauberer sein auf diese Weise:

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

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

Oder, noch besser:

var Controllers = {}; 

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

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