Мы все знаем, что Angular является SPA (одностраничное приложение). Я хочу знать правильное решение, где я могу показать одну главную страницу выбора левой стороны меню, и когда пользователь нажимает что-либо из меню, он должен находиться в правом боковом представлении div.
У меня это есть и реализовано так.
$stateProvider
.state('home', {
url: '/',
cache: false,
templateUrl : 'resources/components/home/home.html',
controller : 'homeController',
}).state('main', {
url: '/main',
templateUrl : 'resources/components/dashboard/main.html',
controller : 'dashboardController',
}).state('main.profile', {
url: '/profile',
templateUrl : 'resources/components/clinicprofile/profile.html',
controller : 'profileController',
мой метод работает именно так...
на самой первой странице /# я показываю страницу входа, и когда пользователь вводит логин, он перенаправляет на #/main, где отображается только левая строка меню, а когда пользователь переходит на страницу профиля, URL становится как #/main/profile из-за ui view в main.html, так что main.html может содержать в себе все остальные представления (profile., setting.html и т.д.).
то, что я хочу, когда пользовательский логин, он должен быть перенаправлен на страницу профиля и профиля, будет там с левой колонкой.. снова, если пользователь нажмет на настройку в левой строке меню, он должен быть перенаправлен на/параметр, но в этом случае у меня есть для перезагрузки всей страницы и содержимого main.html будет отображаться на каждой странице.. то опять же, в чем смысл SPA, если я даю каждой странице полный контент, например, верхний колонтитул в левой панели меню... есть ли какое-либо решение, где слева столбец будет там, и пользователь может пользоваться приличным URL-адресом, например /profile,/setting, а не /main/profile, main/setting.
Надеюсь, у тебя есть мой вопрос.
Да, вы можете определить отдельные виды для бокового меню, главного меню, добавить и т.д. И повторно использовать их. Например, вы можете создать файл sidemenu.html и поместить его в ресурсы/компоненты/панель управления, а затем повторно использовать его как для основного, так и для main.profile.
$stateProvider
.state('home', {
url: '/',
cache: false,
templateUrl : 'resources/components/home/home.html',
controller : 'homeController',
}).state('main', {
url: '/main',
views: {
'': {
templateUrl : 'resources/components/dashboard/main.html',
controller : 'dashboardController',
},
'nav@main': {
templateUrl : 'resources/components/dashboard/sidemenu.html'
}
}
}).state('profile', {
url: '/profile',
views: {
'': {
templateUrl : 'resources/components/clinicprofile/profile.html',
controller : 'profileController',
},
'[email protected]': {
templateUrl : 'resources/components/dashboard/sidemenu.html'
}
}
});
А в index.html у вас есть что-то вроде этого:
<div ui-view></div>
<div ui-view="nav"></div>