Я пытаюсь создать два разных шаблона. Одна из них - целевая страница для зарегистрированных пользователей, описывающих бизнес и другую страницу панели мониторинга, если пользователь вошел в систему.
Я прочитал этот другой стек о том, как это сделать с помощью UI-маршрутизатора. Я хотел бы узнать, как лучше всего сделать что-то подобное, используя ngRoute?
Как показано ниже, "/frontdesk" - это панель управления, а "/" - целевая страница для выведенных из системы пользователей. НО! Я хочу, чтобы URL-адрес был одинаковым для того, находится ли пользователь на панели мониторинга или выведен из системы и отправлен на целевую страницу! Я не хочу "/frontdesk", я хочу "/" для IndexController и FrontdeskController.
Вот моя маршрутизация 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('/');
}
})();
Решение!
Спасибо всем за ваши ответы.
Благодаря @ThibaudL для лучшего решения.
Вот как я это сделал:
В 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();
}
})();
Итак, теперь, если пользователь аутентифицирован, он просто переключает шаблоны на панель пользователей. Я добавил новый div с ng-контроллером для каждого шаблона, чтобы каждый шаблон имел свои отдельные контроллеры.