在基于多个用户上下文渲染整个页面并发出多个 $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) 请求将被取消,所以我不能使用它。此外,hack $location.path($location.path()) 也不起作用(什么也没发生)。

是否有另一种方法可以重新呈现页面而无需再次手动发出所有请求?

最佳答案

作为记录,要强制 angular 重新呈现当前页面,您可以使用:

$route.reload();

根据 AngularJS documentation :

关于javascript - 如何使用 AngularJS 重新加载或重新渲染整个页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16703215/

10-16 21:02