2016-08-04 8 views
0

受信ボックスアプリケーションを作成しようとしています。メッセージリストは左側にあり、選択したメッセージの詳細は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; 
       }] 
      } 
     }) 

答えて

0

神私のああ...

私は$ stateChangeStart(認証目的)でいくつかのチェックをしていたことを忘れてしまった...と、すべての[OK]場合:

$state.go(next.name, params, {reload: true}); 

私が変更しましたパラメータをnext.nameにリロードします。 これは機能します。

ご迷惑をおかけして申し訳ありません...

0

これを試してみてください:

$state.go('^. show', {id: id}); 

^は、親状態を意味します。

+0

私はちょうど試しましたが、変更はありません。 – Ecorce

関連する問題