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)
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()实际上是重新加载页面,而只是路由.
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
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)
如果使用Angulars更高级的ui-router我肯定会推荐你现在可以简单地使用:
$state.reload();
Run Code Online (Sandbox Code Playgroud)
这与Dunc的回答基本相同.
我避免无限循环的解决方案是创建另一个进行重定向的状态:
$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)