提问者:小点点

如何使用AngularJS重新加载或重新呈现整个页面


在基于多个用户上下文呈现整个页面并发出多个$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(),则auth.impersonate(username)上等待响应的某些$HTTP请求将被取消,因此我不能使用它。此外,黑客$location.path($location.path())也不起作用(什么也不会发生)。

有没有另一种方法可以重新呈现页面,而不用再次手动发出所有请求?


共1个答案

匿名用户

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

$route.reload();

根据AngularJS文档:

即使$Location未更改,$route服务也会重新加载当前路由。

因此,ngView会创建新的作用域,重新初始化控制器。