Router beheben nicht injizieren in die Steuerung
Ich habe alles versucht, um ui-router beheben, übergeben Sie den Wert für den gegebenen controller–AppCtrl. Ich bin mit dependency injection mit $inject
, und das scheint die Probleme verursachen. Was bin ich?
Routing
$stateProvider.state('app.index', {
url: '/me',
templateUrl: '/includes/app/me.jade',
controller: 'AppCtrl',
controllerAs: 'vm',
resolve: {
auser: ['User', function(User) {
return User.getUser().then(function(user) {
return user;
});
}],
}
});
Controller
appControllers.controller('AppCtrl', AppCtrl);
AppCtrl.$inject = ['$scope', '$rootScope'];
function AppCtrl($scope, $rootScope, auser) {
var vm = this;
console.log(auser); //undefined
...
}
Bearbeiten
Hier ist ein plunk http://plnkr.co/edit/PoCiEnh64hR4XM24aH33?p=preview
- Haben Sie vermissen die Injektion
auser
?AppCtrl.$inject = ['$scope', '$rootScope', 'auser'];
- die Injektion
auser
Ergebnisse in einem[$injector:unpr]
Fehler. 🙁 - Keine ng-controller, den Sie brauchen, um es einrichten mit route nur
- Toller input! Es funktioniert 😀 Sie buchen möchten, da eine Antwort?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie route zu beheben argument dependency injection in den controller an die route, die Sie verwenden können, dass der controller mit der ng-controller-Direktive, weil der service-provider mit dem Namen
aname
existiert nicht. Es ist eine dynamische Abhängigkeit eingespritzt wird, durch den router, wenn es instanziiert den controller gebunden zu sein, die in Ihrer jeweiligen Teilansicht.Erinnern Sie sich auch zurück
$timeout
in deinem Beispiel, denn es gibt eine Verheißung, ansonsten Ihr argument aufgelöst wird, für die kein Wert, dasselbe ist der Fall, wenn Sie mit$http
oder einem anderen Dienst, die eine Zusage zurückgibt.ich.e
In den controller injizieren der Abhängigkeiten auflösen.
in der Anzeige anstelle von ng-controller verwenden
ui-view
Richtlinie:Demo
Hier ist, wie ich arbeite, zu lösen. Es sollte erhalten Versprechen. Also ich erstelle Dienst entsprechend.
Dies ist die wichtigste Idee. Sie können auch etwas tun, wie dies mit
$q
Diese sind fast identisch in Aktion. Der Unterschied ist, dass im ersten Fall, wird der Dienst starten abrufen von Datum, wenn Sie anrufen
resolve()
Methode der service-und im zweiten Beispiel wird es anfangen zu Holen, wenn factory-Objekt erstellt wird.Nun in Ihrem Staat.