2016-02-08 2 views
0

У меня есть проект, для которого мне нужны 2 макета. Один из них, в основном, 1 столбец (вид целевой страницы) и тот, у которого есть меню наверху, и в основном одно и то же 1 макет столбца.Несколько макетов с UI-Router

Я установил два макета HTML, которые я использую в своих состояниях, но проблема в том, что каждый раз, когда я переключаюсь из одного состояния в другое, весь HTML в самом верхнем ui-view (один в теле).

Вот мои настройки:

Маршруты

.state('root', { 
    url: '', 
    abstract: true, 
    templateUrl: 'app/layouts/logged-in.html' 
}) 
.state('root.homepage', { 
    url: '/', 
    templateUrl: 'app/main/main.html', 
    controller: 'MainController', 
    controllerAs: 'main' 
}) 
.state('candidate', { 
    url: '/candidate', 
    abstract: true, 
    templateUrl: 'app/layouts/logged-in.html' 
}) 
.state('candidate.profile', { 
    url: '/profile', 
    templateUrl: 'app/candidate/profile.html', 
    controller: 'CandidateProfileController', 
    controllerAs: 'profile' 
}) 

index.html

<body> 
    <div ui-view></div> 
</body> 

вошедшего in.html

<div> 
    <my-navbar></my-navbar> 
</div> 
<div ui-view></div> 

вошедшего out.html

<div ui-view></div> 

Проблема заключается в том, что при переключении между root.homepagecandidate.profile и, my-navbar не получает удален, а затем повторно добавляется, что пользователь может кратко см (до нового HTML нагрузок). Я бы понял, если одно из состояний будет иметь макет logged-out.html, а другой - макет logged-in.html, но мы говорим о том же файле, и я хочу обновить только ui-view изнутри файла logged-in.html.

+2

Возможно, лучше создать абстрактное состояние для зарегистрированных пользователей, в (включая навигационную панель), а затем внутри ввести div для размещения именованного вида 'mainContent'. И сконфигурируйте все свои состояния для расширения состояния входа в систему с определением видов: {'mainContent': {controller: ..., templateUrl: ...}} –

+0

@IlyaDyoshin Я закончил делать что-то подобное, минус определяющие представления , потому что сейчас я им не нужен. Если бы вы были так добры, чтобы ответить на этот вопрос, я бы с радостью согласился с этим. –

ответ

1

Возможно, лучше создать абстрактное состояние для входа в систему (включая навигационную панель), а затем ввести div для размещения именованного вида mainContent. И сконфигурируйте все свои состояния для расширения состояния входа в систему с определением видов: {'mainContent': {controller: ..., templateUrl: ...}}

Смежные вопросы