受信ボックスアプリケーションを作成しようとしています。メッセージリストは左側にあり、選択したメッセージの詳細はUI-Routerを使用して作成しています。AngularJS UI-Routerの親状態が再読み込み
私は、データベースからのメッセージのリストを解決する親状態、およびデータベース(パラメータのid)から選択したメッセージを解決する子状態をしました。
問題:メッセージ間を移動するとき(子状態、idパラメータの変更のみ)、親状態も再読み込みされます(ビュー、コントローラ、メッセージリスト)。私はそれが欲しくない、なぜそれが起こるのか分からない。偽:
ナビ - 第二の溶液は、(親が再ロード)
// Solution 2.1
$state.go('app.messengers.show', {id: id});
// Solution 2.2
$state.transitionTo('app.messengers.show', {id: id});
は、パラメータ」リロードを追加することも試みてみました - 最初のソリューションは、(親が再ロード)
<a ui-sref="app.messengers.show({id: row.id})"></a>
ナビゲーションみました"両方のソリューション(ui-sref-optsは第1の解決策、第3のパラメータは第2の解決策):親がリロードされる。
UI-ルータ
.state('app.messengers', { // parent state
abstract: true,
url: '/messenger',
templateUrl: 'app/messengers/list.html',
controller: 'MessengersController',
resolve: {
load: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load([
'app/messengers/messengerService.js',
'app/messengers/messengersController.js'
]);
}],
messages: ['load', 'MessengerService', function (load, MessengerService) {
return MessengerService.list();
}]
}
})
.state('app.messengers.show', { // child state
url: '/:id',
templateUrl: 'app/messengers/detail.html',
controller: 'MessengerDetailController',
params: {
id: null
},
resolve: {
load1: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load([
'app/messengers/messengerDetailController.js'
]);
}],
message: ['load', '$stateParams', 'MessengerService', function (load, $stateParams, MessengerService) {
var regexp = new RegExp('^\\d+$');
return (regexp.test($stateParams.id)) ? MessengerService.get($stateParams.id) : null;
}]
}
})
私はちょうど試しましたが、変更はありません。 – Ecorce