1. ホーム
  2. ジャバスクリプト

[解決済み】AngularJSでページ全体を再読み込み・再レンダリングする方法

2022-03-29 23:41:36

質問

複数のユーザーコンテキストに基づいてページ全体をレンダリングし、いくつかの $http リクエストを送信した後、ユーザーがコンテキストを切り替えてすべてを再レンダリングできるようにしたい(すべての $http リクエストなど)。ユーザーを別の場所にリダイレクトするだけで、正常に動作します。

$scope.on_impersonate_success = function(response) {
  //$window.location.reload(); // This cancels any current request
  $location.path('/'); // This works as expected, if path != current_path
};

$scope.impersonate = function(username) {
  return auth.impersonate(username)
    .then($scope.on_impersonate_success, $scope.on_auth_failed);
};

もし私が $window.location.reload() を使用すると、一部の $http のリクエストは auth.impersonate(username) がキャンセルされてしまうので、使えません。また、ハッキングの $location.path($location.path()) もうまくいきません(何も起こりません)。

手動ですべてのリクエストを再度発行せずに、ページを再レンダリングする他の方法はありますか?

解決方法は?

ちなみに、angularに現在のページを強制的に再レンダリングさせるには、以下のようにします。

$route.reload();

AngularJSによると ドキュメント :

location が変更されていない場合でも、$route サービスに現在のルートを再読み込みさせます。

その結果、ngViewは新しいスコープを作成し、コントローラを再定義しています。