Im работает на угловых приложений. Пока у меня есть файл layout.html, который содержит основной шаблон приложения. Есть и другие файлы в частях /, которые направляются этим кодом:Angularjs ролевая маршрутизация
angular.module('appRoutes', []).config(['$routeProvider', '$locationProvider', '$httpProvider',
function ($routeProvider, $locationProvider, $httpProvider) {
$routeProvider
.when('/', {
templateUrl: '/partials/index',
controller: 'MainController'
})
.when('/:category/:action?/:id?', {
templateUrl: function (params) {
var allowedParams = ['category', 'action', 'id'];
var paramVals = [];
for (var key in params) {
if (allowedParams.indexOf(key) !== -1) {
paramVals.push(params[key]);
}
}
console.log(paramVals.join('/'));
return '/partials/' + paramVals.join('/');
}
})
.otherwise({
redirectTo: '/'
});
]);
Пока это хорошо работает. Однако это будет сложнее. Я хочу показать ролевые представления. Основное различие между каждым из видов будет состоять из навигационного содержимого боковой панели. Сформулируем это с примером: если я наберу www.domain.com/admin-dashboard или www.domain.com/user-dashboard, будут показаны похожие взгляды, однако варианты и меню, доступные для каждой роли, будут разными. Моя первая попытка - создать admin-layout.html и user-layout.html. Однако я не знаю, является ли это правильным решением, и у меня возникают проблемы с написанием кода, поэтому он использует один шаблон или другой.
Любые идеи будут оценены.
UPDATE:
Допустим, у меня есть layout.html
<html lang="en">
<head>
</head>
<body ng-app="todoApp" ng-controller="MainController" class="hold-transition skin-blue sidebar-mini">
<div class="wrapper">
<!-- ####### Layout 1: IF the user is logged in: (show header and sidebar depending on the role) -->
<!-- Header: remains the same regardless the role -->
<header class="main-header"></header>
<!-- Left side column: changes according to the role -->
<aside class="main-sidebar"></aside>
<!-- Content -->
<div class="content-wrapper">
<section ng-view class="content">
</section>
</div>
<!-- ####### !Layout 1: end of Layout 1 -->
<!-- ####### Layout 2: IF the user is not logged in: (show a simple login form in the middle) -->
<!-- Content -->
<div class="content-wrapper">
<section ng-view class="content">
</section>
</div>
<!-- ####### !Layout 2: end of Layout 2 -->
<!-- Footer: remains the same always -->
<footer class="main-footer"></footer>
</div>
</body>
Я могу определить роль пользователя регистрируется, однако в зависимости от роли, которую я хочу показать различную информацию по боковая панель. Это может быть достигнуто с использованием data-ng-include, как описано Али. Однако, если Id хотел отобразить другой шаблон для страницы входа в качестве примера (там, где нет боковой панели или навигационной панели, просто пустой холст с нижним колонтитулом), или если бы я хотел отобразить шаблон из 3 столбцов. Как это можно сделать правильно? Как я могу указать угловое использование другого шаблона при определенном условии. Еще раз спасибо.
Другой пример: есть вид www.example.com/login. Мне просто нужен простой белый шаблон, в котором может быть отображена форма входа. Мне не нужны навигаторы и нижние колонтитулы, доступные для остальных видов. – Jonathan