Как установить вложенное представление внутри нескольких представлений

У меня есть два именованных представления и безымянное представление следующим образом:

//department.html
<div class="col-md-2">
        <div ui-view="sideBar"></div>
 </div>

 <div class="col-md-10">

        <div ui-view="content"></div>

        <div ui-view></div>

 </div>

И мои маршруты:

.state('Support', {
    url: '/support',
    views: {
       '': { templateUrl: 'app/components/department/department.html'  },

       'sideBar@Support': {
                           templateUrl: 'app/shared/sideBar/sideBar.html',
                           controller: 'SideBarController'
                          },

        'content@Support':{
                           templateUrl: 'app/components/department/support/partial-support.html',
                           controller: 'SupportController'
                          },

      }        
  })


.state('Support.view', {
  url: '/view',
  template: '<b> Hi there nested!!</b>'
});

Что мне нужно :

  • localhost/support: это родительский URL-адрес, в этот URL-адрес вводятся два именованных представления (боковая панель и контент), которые работают для меня.
  • localhost/support/view: в этом маршрутизаторе я хочу дочернее представление, которое заменит представление content ИЛИ заменит оба множественных представления.

Проблема в том, что у меня не работает вложенный вид, я что-то не так делаю?

PS: я прочитал документацию по ui-router и увидел другие вопросы, но не могу найти похожий сценарий.


person Marwen Trabelsi    schedule 14.04.2015    source источник
comment
Возможный дубликат: stackoverflow.com/questions/15637350 /   -  person    schedule 14.04.2015
comment
Нет, эта ветка про ng-views, я уже использую ui-router...   -  person Marwen Trabelsi    schedule 14.04.2015


Ответы (1)


Ваш сценарий работает, если НЕ включен режим html5Mode. Существует рабочий плункер.

Я просто использовал эти ссылки:

<a ui-sref="Support">
<a ui-sref="Support.view">

А состояние как есть - работает.

В случае, если у вас включен html5Mode, вы также должны настроить свой сервер. Но, как показывает обновленный планкер, он снова работает, даже с включенным режимом html5Mode.

$locationProvider.html5Mode({enabled: true});

Проверить версию

person Radim Köhler    schedule 14.04.2015
comment
Спасибо за указание на html5Mode, но проблема все еще не решена. Я хочу полностью заменить содержимое content@Support, другими словами, когда я нажимаю ссылку Support.view я не хочу видеть содержимое content@Support... - person Marwen Trabelsi; 14.04.2015
comment
Я создал скорректированный плункер здесь plnkr.co/edit/0nls7qhL40B792uRZ6sp?p=preview, что изменяет содержимое content@Support в Support.view... на пустой материал. Я использовал собственное решение UI-Router - multi views :{} Надеюсь, что это поможет - person Radim Köhler; 15.04.2015