複数のユーザー コンテキストに基づいてページ全体をレンダリングし、複数のリクエストを行った後$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())
すべてのリクエストを手動で再度発行せずにページを再レンダリングする別の方法はありますか?
ベストアンサー1
ちなみに、Angular で現在のページを強制的に再レンダリングするには、以下を使用できます。
$route.reload();
AngularJSによるとドキュメンテーション:
$location が変更されていない場合でも、$route サービスによって現在のルートが再読み込みされます。
その結果、ngView は新しいスコープを作成し、コントローラーを再インスタンス化します。