2016-06-19 12 views
1

Ich versuche, angular.module mehrmals zu definieren, ist einer für Controller und man ist für Service usw. TestService ist eine Fabrik, die in test.js definiert ist, und ich möchte es verwenden in der aktuellen HTML-Seite.angular js Definition Modul mehrere Male nicht funktioniert

HTML

<script src="test.js"></script> 

<script> 
var app = angular.module("myapp", ['TestService']).controller(
    "MyController", function($scope, $cookies,TestService) { 

<script> 

Jetzt habe ich eine andere Javascript-Seite, wo ich einen Dienst zu schreiben versuche.

test.js

angular.module("myapp").factory('TestService', function() { 
    return { 
     sayHello: function(){ 
      return "Factory says hi; 
     } 

    } 
}); 

Ich bin der Fehler 'Testservice' bekommen ist nicht verfügbar!

Antwort

1

Ihre HTML sollte wie folgt aussehen:

<script> 
    var app = angular.module("myapp", []) 
    .controller("MyController", function($scope, $cookies, TestService) { 
     // ... 
    }); 
</script> 

<script src="test.js"></script> 

Was bedeutet, dass Sie erste Modul definieren müssen (angular.module("myapp", [])), dann Dienst registrieren lassen darauf.

+0

Ja, aber ist es nicht erforderlich, den Service innerhalb der eckigen Klammer hier zu injizieren? zB angular.module ("myapp", ['TestService']) vs. angular.module ("myapp", []) –

+0

Wenn Sie ein Modul erstellen, injizieren Sie nichts, das sind abhängige * Module * in Klammern, keine Dienste . So könnten Sie zum Beispiel das Modul Test erstellen, Ihren Dienst dorthin stellen und Test dann als Abhängigkeit für das Hauptmodul verwenden. 'angular.module ('Test', []). factory ('TestService', function() {...}); angular.module ('myapp', ['Test']). controller ('MyController', function() {...}) '. – dfsq