この質問は"How can I persist sibling ui-views when changing state"(plunker)に基づいています。状態-ui-routerを変更すると、兄弟ui-viewsが表示される
メインナビゲーション(mainNav)で状態を変更すると、ビュー(コンテンツ)を変更しないようにしています。
コンテンツはサブナビゲーションでのみ設定し、メインナビゲーションを変更するときは残ります。
状態が残っていても、ui-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を見つけましたが、問題は完全に解決されません。状態は永続的ですが、別の状態にナビゲートすると一貫したビューが残ることは考慮されていません。
編集がブロックされているようです:1つのことを忘れてしまいました。制限:この方法では、いくつかのフィールドを提供して親が子孫に縛られていることを意味します。紛争。これを解決する良い方法は、各子が$ scope.contextに状態を保存することです。[子の状態名]。 – Walfrat