Ich versuche, zwei verschiedene Vorlagen zu haben. Eine ist die Zielseite für abgemeldete Benutzer, die über das Geschäft und die andere Dashboard-Seite beschreiben, wenn ein Benutzer angemeldet ist.Angular - gleiche URL "/" aber mit verschiedenen Vorlagen basierend auf dem angemeldeten Benutzerstatus
Ich lese auf this other stack wie dies mit UI-Router zu tun. Ich würde gerne die beste Vorgehensweise kennen, um etwas Ähnliches mit ngRoute zu machen?
Die Art der Einrichtung unten ist, dass "/ frontdesk" das Dashboard und "/" die Zielseite für ausgeloggte Benutzer ist. ABER! Ich möchte, dass die URL identisch ist, unabhängig davon, ob sich der Nutzer im Dashboard befindet oder ausgeloggt und an die Zielseite gesendet wird! Ich will nicht "/ frontdesk", ich will "/" für IndexController und FrontdeskController.
Hier ist mein Routing JS.
(function() {
'use strict';
angular
.module('resonanceinn.routes')
.config(config);
config.$inject = ['$routeProvider'];
function config($routeProvider) {
$routeProvider
.when('/', { // This is the landing Page
controller: 'IndexController',
controllerAs: 'vm',
templateUrl: '/static/javascripts/layout/index.html'
})
.when('/frontdesk', { //This is logged in user that I want to become '/' as well
controller: 'FrontdeskController',
controllerAs: 'vm',
templateUrl: '/static/javascripts/frontdesk/frontdesk.html'
})
.when('/register', {
controller: 'RegisterController',
controllerAs: 'vm',
templateUrl: '/static/javascripts/authentication/register.html'
})
.when('/login', {
controller: 'LoginController',
controllerAs: 'vm',
templateUrl: '/static/javascripts/authentication/login.html '
})
.when('/:username', {
controller: 'ProfileController',
controllerAs: 'vm',
templateUrl: '/static/javascripts/profiles/profile.html'
})
.when('/:username/settings', {
controller: 'ProfileSettingsController',
controllerAs: 'vm',
templateUrl: '/static/javascripts/profiles/settings.html'
}).otherwise('/');
}
})();
Lösung!
Vielen Dank für Ihre Antworten.
Dank @ThibauL für die bessere Lösung.
Dies ist, wie ich am Ende, es zu tun:
In Routes.js
.when('/', {
controller: 'MainController',
controllerAs: 'vm',
templateUrl: '/static/javascripts/layout/Main.html'
Main.html
<div ng-include="" src="'/static/javascripts/layout/index.html'" ng-if="auth"></div>
<div ng-include="" src="'/static/javascripts/frontdesk/frontdesk.html'" ng-if="!auth"></div>
MainController.js
(function() {
'use strict';
angular
.module('resonanceinn.layout.controllers')
.controller('StartController', StartController);
StartController.$inject = ['$scope', '$route', '$routeParams', '$location', 'Authentication'];
function StartController($scope, $route, $routeParams, $location, Authentication) {
$scope.auth = Authentication.isAuthenticated();
}
})();
Wenn nun der Benutzer Authentifiziert ist, werden die Vorlagen einfach auf das Benutzer-Dashboard umgeschaltet. Ich habe ein neues Div mit ng-Controller zu jeder Vorlage hinzugefügt, so dass jede Vorlage ihre eigenen Controller hat.
Danke, ich habe es an die Arbeit! Ich habe deine Antwort korrigiert, um zu zeigen, wie ich es geschafft habe. –