2016-06-10 6 views
-2

was ich braucheDienstleister funktioniert nicht in Winkel js

js Code

var app = angular.module('myApp', []); 
app.service('productService', function() { 
    var productList = []; 

    var addProduct = function(newObj) { 
    productList.push(newObj); 
    }; 

    var getProducts = function(){ 
    return productList; 
    }; 

    return { 
    addProduct: addProduct, 
    getProducts: getProducts 
    }; 
}); 




app.controller('parentController', function ($scope,productService) { 
    $scope.change = function() { 
    alert($scope.value); 
    } 
}); 

Fehler

error: [$injector:unpr] Unknown provider: productServiceProvider <- productService <- parentController 
  • Ich muss die Daten von der Steuerung zu einer anderen zu übergeben.

  • während i don "t verstehen, warum seine Herstellung solcher Fehler.

+0

definieren Sie 'app' nach Ihrem ersten' app.service'. Sind sie in verschiedenen Modulen/Dateien? –

+1

Ich denke, die Tatsache, dass "app" verwendet wird, bevor es erstellt wird, ist ein Tippfehler ... In jedem Fall muss 'module.service' einen * Konstruktor * zurückgeben; Probieren Sie 'module.factory' aus, wenn Sie die Instanz des Dienstes zurückgeben wollen. –

+0

Ihr Code funktioniert gut. Stellen Sie sicher, dass Sie Ihre Servicedatei in Ihr Projekt aufgenommen haben. Überprüfen Sie auch die Reihenfolge der Verlangsamung von "Modul" und "Service". –

Antwort

-1

Sie Service vor Modul declearation erklärt haben. So es zu einem Modul hinzugefügt wird

diese Schritte folgen

var app = angular.module('myApp', []); 

Dann erstellen Sie Controller und Service

app.service('productService', function() { .... 

und

app.controller('parentController', function ($scope,productService) {... 

Ich habe Ihre Geige Beispiel Link überprüfen ändern,

Ich habe einen anderen Controller erstellt, die denselben Dienst teilen.

+0

jaendr es war nur Eingabe Code Problem ich habe nur auf diese Weise zu deklarieren – user2818060

+0

ich denke, Service ist nicht die richtige Wahl, um Kommunikation zu behandeln – user2818060

+0

ja, können Sie ein Eltern-Controller, um diese daten- oder ereignisbasierte Lösung zu teilen. –

1

Dieser Fehler ist darauf zurückzuführen, dass $injector eine erforderliche Abhängigkeit nicht auflösen kann.
Um dies zu beheben, stellen Sie sicher, dass die Abhängigkeit definiert und korrekt geschrieben ist.

Ich habe zwei Vermutung dafür:

  • Sie beheben einen Dienstnamen Tippfehler, während Kopie Code auf Ihre Frage Fiddle.
    einfach überprüfen Sie Ihre tatsächlichen Service-Name

  • Sie neu deklarieren angular.moduleExample

Beispiel:

var app = angular.module('myApp', []); 
app.service('productService', function() { 
    return {}; 
}); 

app = angular.module('myApp', []); // <- module redeclared 
app.controller('parentController', function ($scope,productService) { 
    $scope.value = 'World' 
});  

angular.module('myApp', []) neue Instanz des Moduls erzeugt ohne vorherige erklärt Anbieter zu kennen.
Sie können es für die nachfolgende Verwendung mit angular.module('myApp') abrufen.

+0

Kann ich nach einem Kommentar über downvote fragen? –

+0

ich kann nicht Drop-Down-Werte hinzufügen in addproduct() Funktion: undefined – user2818060

+0

https://jsfiddle.net/wwvgfcp3/5/ – user2818060