AngularJs:重新加载页面

use*_*386 130 angularjs angularjs-scope

<a ng-href="#" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Run Code Online (Sandbox Code Playgroud)

我想重新加载页面.我怎样才能做到这一点?

Ale*_*Rus 261

您可以使用reload$route服务的方法.注入$route在你的控制器,然后创建一个方法,reloadRoute在你的$scope.

$scope.reloadRoute = function() {
   $route.reload();
}
Run Code Online (Sandbox Code Playgroud)

然后你可以在链接上使用它,如下所示:

<a ng-click="reloadRoute()" class="navbar-brand" title="home"  data-translate>PORTAL_NAME</a>
Run Code Online (Sandbox Code Playgroud)

此方法将导致当前路由重新加载.但是,如果您想要执行完全刷新,则可以注入$window并使用:

$scope.reloadRoute = function() {
   $window.location.reload();
}
Run Code Online (Sandbox Code Playgroud)


稍后编辑(ui-router):

正如JamesEddyEdwards和Dunc在他们的回答中提到的,如果你使用angular-ui/ui-router,你可以使用以下方法重新加载当前的状态/路由.只需注入$state而不是$route然后你有:

$scope.reloadRoute = function() {
    $state.reload();
};
Run Code Online (Sandbox Code Playgroud)

  • 如果您迫切需要Angularise重新加载,这是一个很好的答案. (2认同)

Flo*_* F. 51

window对象通过$window服务提供,以便于测试和模拟,您可以使用以下内容:

$scope.reloadPage = function(){$window.location.reload();}
Run Code Online (Sandbox Code Playgroud)

而且:

<a ng-click="reloadPage"  class="navbar-brand" title="home"  data-translate>PORTAL_NAME</a>
Run Code Online (Sandbox Code Playgroud)

作为旁注,我不认为$ route.reload()实际上是重新加载页面,而只是路由.

  • 我建议使用`$ window`而不是`window`. (2认同)

use*_*549 18

 location.reload(); 
Run Code Online (Sandbox Code Playgroud)

诀窍.

<a ng-click="reload()">

$scope.reload = function()
{
   location.reload(); 
}
Run Code Online (Sandbox Code Playgroud)

不需要路线或任何简单的旧js

  • 喜欢简约! (2认同)

Dun*_*unc 14

与亚历山大的答案类似,但使用$ state而不是$ route:

(从JimTheDev的SO答案在这里.)

$scope.reloadState = function() {
   $state.go($state.current, {}, {reload: true});
}

<a ng-click="reloadState()" ... 
Run Code Online (Sandbox Code Playgroud)


Jam*_*rds 9

如果使用Angulars更高级的ui-router我肯定会推荐你现在可以简单地使用:

$state.reload();
Run Code Online (Sandbox Code Playgroud)

这与Dunc的回答基本相同.


Guc*_*112 5

我避免无限循环的解决方案是创建另一个进行重定向的状态:

$stateProvider.state('app.admin.main', {
    url: '/admin/main',
    authenticate: 'admin',
    controller: ($state, $window) => {
      $state.go('app.admin.overview').then(() => {
        $window.location.reload();
      });
    }
  });
Run Code Online (Sandbox Code Playgroud)