私は現在、私のアプリケーションに状態階層を持っています。角度UIルータ - 子供の切り替え時に親状態の再実行を防止する
- module_base
- page_base
- tab_one
- tab_two
- tab_three
page_base
状態が抽象であり、ページ(例えばGET /products/123
)のレコードを返し、それは、子タブにアクセス可能なコントローラを有しています。
私が抱えている問題は、コントローラの上にあるpage_base
状態のタブの間をいつでも再実行することです。つまり、すべての移行時に製品リソースが取得されるということです。
タブ間をナビゲートするメニューは<a/>
のリストで、ui-sref
(例:<a ui-sref=".tab_one">Tab One</a>
)です。 ui-sref-opts
を使用してreload
とnotify
のパラメータを調べましたが、違いはありません。
page_base
の状態は、ページ/products/3/*
の場合に一度だけロードされますが、ページproducts/9/*
の場合は再実行されるようにするにはどうすればよいですか。
また、最初に開いたときには一度だけロードすることはできますが、再読み込みすると再読み込みできませんか?
多くの感謝!
状態構成;
// Page Base
.state('module_base.page_base', {
abstract: true,
url: '/{id:int}',
views: {
base: {
templateUrl: 'path/to/baseTemplate.html',
controller: 'BaseController', // Reruns whenever the child states are loaded
controllerAs: 'baseVm'
},
'sidebar': {
// Configuration for the app sidebar
}
},
resolve: {
// ACL permissions check
}
})
// Tab one
.state('module_base.page_base.tab_one', {
url: '/tab-one',
views: {
'page': {
templateUrl: 'path/to/template.html',
controller: 'TabOneController',
controllerAs: 'vm'
}
}
})
// Tab two
.state('module_base.page_base.tab_two', {
url: '/tab-two',
views: {
'page': {
templateUrl: 'path/to/template.html',
controller: 'TabTwoController',
controllerAs: 'vm'
}
}
})
私はPlunkerを作成し、主な質問に焦点を当てることをお勧めします。 –