Das ist mein app.js:Resolve Variable für ng Inklusions Ansicht
app.config(['$routeProvider',
function ($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'partials/home.html',
controller: 'homeController',
resolve: {
loggedUser: getLoggedUser
}
}]);
Die Funktion getLoggedUser() gibt ein Versprechen, das in userService
gelöst wird, wenn es den angemeldeten Benutzer gefunden hat. In meinem index.html schließe ich eine Navigationsleiste:
<ng-include src="'partials/navbar.html'" ng-controller="homeController"></ng-include> // Navbar
<div ng-view></div> // Angular views
Die Probleme sind:
- ng-Controller kann nicht mit Vorsatz verwendet werden, da es einen AngularJS Fehler von 'unbekanntem Anbieter erstellt. Daher verursacht das ng-include Probleme für die '/' Route.
- Ich kann/kann nicht wissen, wie man eine Auflösung für die Navbar angibt, da es keine Route hat, aber in jeder Ansicht in index.html enthalten ist. Und die Navigationsleiste muss den Namen des angemeldeten Benutzers anzeigen.
EDIT1: habe ich versucht, eine hässliche Lösung, durch myPromise.$$state.value
in homeController
Rückkehr und die resolve {...}
entfernen. Es fühlt sich jedoch so an, als würde ich die $ q-Versprechen nicht so verwenden. Irgendwelche anderen Vorschläge?
EDIT2: Was ich meine ist, dass der geloggteUser unbekannt ist wegen ng-controller = "". Hier ist eine Erklärung: AngularJS, resolve and unknown provider.
Vielleicht war ich ein bisschen unklar, ich meinte, dass der geloggte Benutzeranbieter unbekannt ist. Ich habe meine Antwort aktualisiert, damit Sie verstehen können, was ich meine. Dies ist ein Ergebnis von ng-controller = "". – Myone