Ответ 1
Существует рабочий плункер
Скорее всего, index.html содержит эти цели:
<body>
<div ui-view="area1"></div>
<div ui-view="area2"></div>
...
Итак, если оба родителя и ребенка нацеливаются на них, нам нужно использовать абсолютное именование:
.state('parent.child1', {
url: "/child1",
views: {
'[email protected]' : {template : '<h2>child 1 area 1 </h2>'},
'[email protected]' : {template : '<h2>child 1 area 2</h2>'},
}
})
.state('parent.child2', {
url: "/child2",
views: {
'[email protected]' : {template : '<h2>child 2 area 1 </h2>'},
'[email protected]' : {template : '<h2>child 2 area 2</h2>'},
}
})
Давайте наблюдать doc:
Показать имена - Относительные и абсолютные имена
За кулисами каждому представлению присваивается абсолютное имя, которое следует схеме
[email protected]
, где viewname - это имя, используемое в директиве представления, а имя состояния - это абсолютное имя состояния, например. contact.item. Вы также можете написать имена имен в абсолютном синтаксисе.Например, предыдущий пример также можно было записать как:
.state('report',{
views: {
'[email protected]': { },
'[email protected]': { },
'[email protected]': { }
}
})
Итак, нашему ребёнку нужно использовать 1) просмотреть имя цели 2) разделитель @и 3) имя состояния (в нашей строке пуст, представляющей корень): '[email protected]'
Эти ссылки, похожие на $state.go(), будут работать сейчас:
<a ui-sref="parent">
<a ui-sref="parent.child1">
<a ui-sref="parent.child2">
Отметьте здесь