Этот вопрос основан на "How can I persist sibling ui-views when changing state" (plunker).persist sibling ui-views при изменении состояния - ui-router
Я пытаюсь сохранить представление (содержание) без изменений, когда я изменяю состояние в основной навигации (mainNav).
Содержимое должно устанавливаться только суб-навигацией и оставаться при изменении основной навигации.
Есть ли возможность оставаться видом в u-router, даже если состояние осталось?
angular.module('MyApp', [
'ui.router'
])
.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('index', {
url: '/',
views: {
'@': {
templateUrl: 'layout.html'
},
'[email protected]': {
template: '<a ui-sref="Main3">Main3 - with sub</a><br />'
+ '<a ui-sref="Main4">Main4 - with sub</a>'
},
'[email protected]' : {
template: '<p>This is the sub navigation</p>'
},
'[email protected]': {
template: '<p>Content shared for MAINs</p>'
}
}
})
.state('Main3', {
parent: 'index',
url: '/Main3',
views: {
/*'mainNav': {
},*/
'subNav': {
template: '<a ui-sref="Main3.Sub1">Main3.Sub1</a><br />'
+ '<a ui-sref="Main3.Sub2">Main3.Sub2</a>'
}
}
})
.state('Main4', {
parent: 'index',
url: '/Main4',
views: {
'subNav': {
template: '<a ui-sref="Main4.Sub1">Main4.Sub1</a><br />'
+ '<a ui-sref="Main4.Sub2">Main4.Sub2</a>'
}
}
})
.state('Main3.Sub1', {
url: '/Sub1',
views: { '[email protected]': { template: 'Content of Main3.Sub1' } }
})
.state('Main3.Sub2', {
url: '/Sub2',
views: { '[email protected]': { template: 'Content of Main3.Sub2' } }
})
.state('Main4.Sub1', {
url: '/Sub1',
views: { '[email protected]': { template: 'Content of Main4.Sub1' } }
})
.state('Main4.Sub2', {
url: '/Sub2',
views: { '[email protected]': { template: 'Content of Main4.Sub2' } }
})
});
Я нашел Persist state when changing to another state, но это не решает проблему полностью. Состояние является постоянным, но нет никакого рассмотрения остаточного представления, согласованного при переходе в другое состояние.
Редактировать, кажется, заблокировано ... Я забыл одно: ограничение: этот способ означает, что родитель немного привязан к своему ребенку, так как он предоставил некоторые поля, а ребенок должен знать друг друга, чтобы не иметь любой конфликт. Хороший способ разрешить это будет для каждого ребенка, чтобы сохранить свое состояние в $ scope.context. [Имя состояния ребенка]. – Walfrat