After rendering the entire page based on several user contexts and having made several $http requests, I want the user to be able to switch contexts and re-render everything again (resending all $http requests, etc). If I just redirect the user somewhere else, things work properly:

$scope.on_impersonate_success = function(response) {
  //$window.location.reload(); // This cancels any current request
  $location.path("https://stackoverflow.com/"); // 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);
};

If I use $window.location.reload(), then some of the $http requests on auth.impersonate(username) that are waiting for a response get cancelled, so I can’t use that. Also, the hack $location.path($location.path()) doesn’t work either (nothing happens).

Is there another way to re-render the page without manually issuing all requests again?

13 Answers
13

Leave a Reply

Your email address will not be published. Required fields are marked *