2016-03-31 7 views
0

私はイオン角アプリを持っていますが、私はui-routerを使用しています。私の問題は、自分の状態から新しい状態に移動するときにコントローラが破壊されないということです。したがって、ユーザーがログアウトして別のログインを行った場合、最初のユーザーのデータがコントローラにまだ格納されているため、最初のユーザーデータが表示されます。状態変化時にコントローラを破壊するにはどうすればいいですか?ここでイオンフレームワークでui-routerを備えたコントローラを破壊するには

は、例えば、configです:

$stateProvider.state('root.module.view', { 
    url: '/path', 
    views: { 
    '[email protected]': { 
     template: require('./template.jade'), 
     controller: 'MyController', 
     controllerAs: 'myCtrl' 
    } 
    } 
}); 
+0

angualrjsで$ scopeとコントローラが破壊され、新しいページにアクセスしたとき、AngularはlastScopeで$ destroyを呼び出します(以前のスコープと制御を意味します)。 lers) –

+0

@shushanthpはここにあります...データがどこから来ているか確認してください...それはlocalStorageから来ていますか? – Thalaivar

+0

私の知る限り、私の場合は、ui-routerのために、私たちのコントローラはDOM要素ではなくルートにバインドされています。そして単に新しいページに移動すれば、ナビゲーション・バックはコントローラー・コンストラクターを再度実行させません。 (ルートがまだ存在するため) – NoNameProvided

答えて

1

私は答えを見つけました。問題の根本は、より速いページ変更のためにビューをキャッシュすることですが、そうすることによって、ページを残す際にコントローラが破壊されるのを防ぎます。

この動作を変更する方法がさらにあります。

$stateProvider.state('root.module.view', { 
    url: '/path', 
    views: { 
    '[email protected]': { 
     cache: false, 
     template: require('./template.jade'), 
     controller: 'MyController', 
     controllerAs: 'myCtrl' 
    } 
    } 
}); 

それとも、完全に$ionicConfigProviderでこのようにそれを無効にすることができます:

$ionicConfigProvider.views.maxCache(0); 

番目のオプションは、属性を使用することです:

まず、あなたは、このようにルート設定で cache属性を設定することができます
<ion-view cache-view="false" view-title="My Title!"> 
... 
</ion-view> 
0

は、そのイベントがトリガされたときに、あなたのロジックを行うことができます

function NewsHomeController($rootScope) { 
    $rootScope.$on('$stateChangeSuccess', 
      function(event, toState, toParams, fromState, fromParams){ 
       //do stuff here. 
      }); 
} 

、お使いのコントローラでこれを試してみてください。

あなたは本当にあなたがこれを試すことができ

$scope.$on('destroy', function() { 
    // do something here 
}); 

、スコープが破壊されます際にいくつかのことをトリガーにしたいが、私は、このディレクティブコントローラのためのより適切であると思われる場合。

+0

どうすれば私のコントローラを破壊できますか?私はfromStateオブジェクトで名前を見ることができますが、どうすればそれを破壊できますか? – NoNameProvided

+0

コントローラーを破壊することはできません。ここで私は上記のコードを更新します。 –

+0

ああ、ええ、すべてのコントローラにこのコードを追加することは本当にオプションではありません。その名前でコントローラスコープを取得する方法はありますか?そのため、私は国の変更 – NoNameProvided

関連する問題