UI-router Unbekannt-Anbieter für die Injektion service in kindlichen Zustand beheben
Bekam Unbekannte Anbieter bei der Injektion service in den kindlichen Zustand zu lösen-Funktion. Aber wenn bestimmte auflösen, die in der übergeordneten Zustand, es funktioniert einfach. Unten sind einige Beispiel-codes:
Definierte ich ein service-Modul
angular.module('services', [])
.factory('myService', function() {
//my service here
})
und initialisieren Sie die app
var app = angular.module('app', ['services', 'ui.router']);
app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider,
$urlRouterProvider) {
$stateProvider.state('wizard', {
url: '/wizard',
abstract: true
})
.state('wizard.step1', {
url: '/step1',
templateUrl: ... ,
resolve: {
name: function(myService) {
//do something with mySerice
}
},
controller: function(name) {
//controller codes here
}
})
}]);
Ich habe den Fehler Unbekannt-Anbieter beschweren sich über myService des Assistenten.Schritt 1 lösen. Aber wenn ich hinzufügen, ein zufälliges lösen in den Eltern-Zustand, wie
$stateProvider.state('wizard', {
url: '/wizard',
abstract: true,
resolve: {
a: function() { return 1; }
}
})
dann funktioniert es ohne Fehler. Frage mich, was passiert hier?
Ich kann nicht sehen, was falsch ist. Wenn Sie erstellen ein Turnschuh, das zeigt das problem, ich werde es einmal versuchen.
Stimme mit @StephenFriedrich, das sieht gut aus. Ich habe es in einem plunk: plnkr.co/Bearbeiten/McZ97tJIuSIQnwRkDb8c?p=Album Vorhören
Könnte es sein, dass Sie Links ein ng-controller in der partiellen HTML-Datei? Wenn dem so ist, angular versuchen zu instanzieren der controller beim laden der Ansicht, an dem Punkt 'name' nicht existieren, so erhalten Sie die Fehlermeldung. Siehe meine Antwort zu diesem hier: stackoverflow.com/questions/27023887/...
Stimme mit @StephenFriedrich, das sieht gut aus. Ich habe es in einem plunk: plnkr.co/Bearbeiten/McZ97tJIuSIQnwRkDb8c?p=Album Vorhören
Könnte es sein, dass Sie Links ein ng-controller in der partiellen HTML-Datei? Wenn dem so ist, angular versuchen zu instanzieren der controller beim laden der Ansicht, an dem Punkt 'name' nicht existieren, so erhalten Sie die Fehlermeldung. Siehe meine Antwort zu diesem hier: stackoverflow.com/questions/27023887/...
InformationsquelleAutor Yujun Wu | 2014-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem controller, den Sie haben, Spritzen Sie Ihren Dienst MyService, so definieren Sie so etwas wie dieses
Sorry ich habe nicht verstanden, dass das problem war in der Auflösung, damit ich den code ändern. Sie haben zu injizieren, Ihren Dienst in der Funktion gelöst und in Ihrem controller, den Sie haben zu injizieren, die zu beheben Attribute (z.B.: "name")
Funktioniert Super bei AngularJS 1.7.6
InformationsquelleAutor Mathieu Bertin
Haben Sie injizieren Ihren Dienst in Ihrem config-Funktion :
Eine weitere Möglichkeit ist das einbetten der Behebung von code in einer service-und ordnen Sie direkt den Dienst :
Sicher. Deshalb habe ich eine "Konstante", daß eine Funktion definiert, in meinem Beispiel. Dies ist tatsächlich, wie ich Tue, in der aktuellen app. Aber du hast Recht, das ist nicht möglich, mit einer "Fabrik" oder ein "service".
InformationsquelleAutor benek
Ich bekam dieselbe Fehlermeldung.Versuchen, diesen code. Es funktioniert gut...
InformationsquelleAutor Amar