Sto provando ad avere due modelli diversi. Uno che è la pagina di destinazione per gli utenti che hanno effettuato il logout descrivendo l'attività e l'altra pagina del dashboard se un utente ha effettuato il login.Angolare - stesso Url "/" ma con diversi modelli basati sullo stato di accesso dell'utente
Ho letto su this other stack su come farlo con il router UI. Mi piacerebbe conoscere la pratica migliore per fare qualcosa di simile come questo usando ngRoute?
Il modo in cui è configurato di seguito, è che "/ frontdesk" è il dashboard e "/" è la pagina di destinazione per gli utenti che hanno effettuato la disconnessione. MA! Voglio che l'URL sia lo stesso sia che l'utente sia sul dashboard sia che sia disconnesso e inviato alla pagina di destinazione! Non voglio "/ frontdesk", voglio "/" per IndexController e FrontdeskController.
Ecco il mio 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('/');
}
})();
Soluzione!
Grazie a tutti per le vostre risposte.
Grazie a @ThibaudL per la soluzione migliore.
Questo è quanto ho finito per farlo:
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();
}
})();
Ora, se l'utente è autenticato, passa semplicemente i modelli alla dashboard degli utenti. Ho aggiunto un nuovo div con ng-controller a ciascun modello in modo che ogni modello abbia i propri controller separati.
Grazie, l'ho fatto funzionare! Ho corretto la tua risposta per mostrare come l'ho fatto funzionare. –