以下は、モーダル構造とともに私のアプリ構造のサブセットです。アプリの構造:
.state ('A',{
abstract: true,
sticky:true,
views:{
'@ ':{
template:'<div ui-view="container-a"></div> <div ui-view="container-b"></div>', controller: BController
}
}
})
//同じ構成ファイルでドット表記 (.) で定義されている A の子
.state(A.a,{
views:{
'container-a':{templateUrl:'some.html'},
'container-b':{templateUrl:'anothertemplte.html'}
}
});
私の2番目の構成ファイルには同様の状態構成がありますが、ここでは状態Bは親属性によって定義された状態Aaの子です。これは、継承階層を表す長い文字列を持ちたくなかったためです(AaBなど、一連の状態が同様にネストされているため) )
.state ('B',{
abstract: true,
parent: 'A.a',
views:{
'@':
{
template: <div ui-view="abc"></div><div ui-view="xyz"> /div>,
controller:BController
}
}
})
.state(B.b,{
views:{
'abc':{templateUrl:'some.html'},
'xyz':{templateUrl:'anothertemplte.html'}
}
});
モーダル構造: 閉じるボタンを持つ抽象的なグローバル モーダルと、以下のような他のテンプレートをホストする ui-sref があります。
$stateProvider
.state('global-modal',{
url: '',
abstract: true,
onEnter: ['$modal', function($modal) {
$modal.open({
template: '<html for close button> <div ui-sref="childModal" ',
controller: 'GlobalController',
backdrop:'static',
keyboard:false
})
}]
})
.controller('GlobalController', ['$scope', '$state', '$previousState', '$modalInstance',
function ($scope, $state, $previousState, $modalInstance) {
$previousState.memo("modalInvoker");
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
$previousState.go("modalInvoker");
};
}]);
次に、次のようにグローバルモーダルの ui-view=childModal にロードされる2つのネストされた状態があります(要するに)
state( 'C',{
parent: global-mdoal,
views:{'childModal':{template:'C_template.html', controller: 'CController' } }
})
state('D',{
parent: C,
views:{'childModal':{template:'D_template.html', controller: 'DController' } }
今問題:
Bb 状態でモーダルを開くと C がロードされ、それを閉じるとスティッキーは正常に動作しますが、Bb からモーダルを再度開き、今度は背景の背後で C からサブ状態 D に移動すると、親に移動します状態 (Aa) モーダルを閉じると誰でも Bb に移動しますが、ページは更新されます。(このナビゲーションを C から D へのモーダルで Aa の上に実行すると、C から D へのナビゲーションは常に背景の後ろに Aa をロードするため、ページが更新されないため、モーダルで遷移を行うときに更新が行われませんトップステートAaの上にあるが、BbなどのAaのサブステートの上にあるモーダル内のトランジションは、参照とスティッキーが機能しない原因となる[各ステートにsticky:trueを入れようとしても、再び同じ動作]