2017-05-18 4 views
1

Ich bin Anfänger in AngularJSWinkel-Service-Injektion ist nicht konsistent

Ich habe einen Winkel Service wie unten

angular.module('TestModule', []).service('testservice', ['$timeout', testservice]); 
function testservice($timeout) { 
    /* my function */ 
} 

ich dieses Modul in meinem Hauptmodul Injektion, wie unten in app.js

angular.module("MainModule", ['TestModule']); 

und versucht, den Testservice in meinem Controller wie unten

(function() { 
'use strict'; 
angular 
.module('MainModule') 
.controller('testController', ['$scope', '$state', 'testservice', testController]); 
function testController($scope, $state, testservice) { 
/*I have my functions here */ 
} 

})(); 
zu injizieren

Manchmal wird es erfolgreich injiziert und in manchmal wirft es Fehler wie unten

Unbekannt Anbieter: testserviceProvider < - Testservice < - Testcontroller

Ich kann nicht das Problem erraten, und ich steckte komplett mit es. Was mache ich falsch?

+0

Ich sehe nicht, wie dies aus dem Code, den Sie gepostet haben, möglich ist. Bitte stellen Sie ein Plunk oder eine Geige zur Verfügung, die diesen Fehler replizieren können. – estus

+0

eigentlich funktioniert diese einfache Sache wie erwartet, aber wenn ich die gleiche Art von Dingen in einer großen Anwendung zusammenführen, ist es nicht konsistent –

+0

Es kann zu einigen Versprechen von $ Timeout nicht richtig behandelt werden. – neptune

Antwort

1

Der obige Code kann diesen Fehler nicht verursachen

Unbekannt Anbieter: testserviceProvider < - Testservice < - Testcontroller

Dies kann passieren, wenn TestModule die testservice enthält versehentlich mit einer anderen Definition außer Kraft gesetzt wird TestModule:

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

Wenn der Fehler zufällig angezeigt wird und verschwindet, bedeutet dies, dass in einigen Fällen eine Datei mit TestModule Modul mit testservice vor der Datei mit der überschriebenen TestModule geladen wird. In einigen Fällen ist dies nicht der Fall.

+0

das Problem war, ich war Dienstleistungen in neuen js Dateien und jedes Mal zu schaffen i wurde mit 'angular.module (‚Testmodule‘, []);' , die den vorherigen Dienst überschreibt und nur den letzten Dienst ist in der 'TestModule' verfügbar –

Verwandte Themen