2016-05-21 19 views
0

Werfen Sie einen Blick auf die folgenden:Dependency Injection Sonderfall

angular.module('myapp').controller('Gallery',Gallery); 
Gallery.$inject=['GalleryService']; 
function Gallery(GalleryService){...} 

angular.module('myapp',[]).service('GalleryService',GalleryService); 
GalleryService.$inject=['$http']; 
function GalleryService($http){...}; 

Könnte mir jemand erklären, warum der zweite Block Bedürfnisse [] innerhalb angular.module? Im Fall auslassen ich es mir Exception Error bin immer ...

+1

das zweite Argument Weglassen schafft einen Verweis auf ein Modul ist und es entsteht ein neues Modul. Hast du '.module ('myapp', [])' irgendwo anders in deinem Projekt? – Clint

+1

müssen Sie ein Modul einmal deklarieren, und das erfordert zweites Argument ... ohne zweites Argument ist es ein Getter und wenn Modul nicht existiert, wird Fehler geworfen. Lesen Sie die Dokumentation für 'Modul' – charlietfl

Antwort

1
angular.module('myapp', []) registers the module 
angular.module('myapp') references an already created module called 'myapp' 

Sie Ihren Code wie so für eine klare Vorgehensweise strukturieren könnten:

//Register module 
var myapp = angular.module('myapp', []); 

//Add controllers, service to already created module 
myapp.controller(...); 
myapp.service(...); 

Der zweiten Parameter (das leere Array) ist für Andere Module, die Sie verwenden möchten und die bei der Instanziierung eines neuen Moduls benötigt werden.

https://docs.angularjs.org/api/ng/function/angular.module

+0

Okay, gute Antworten. Warum bekomme ich Ausnahmefehler, wenn ich [] in den ersten Block einfüge? Mit anderen Worten, wenn ich das mit beiden obigen Blöcken mache, funktioniert der Code nicht ... –