Answers:
您可以使用服务的reload
方法$route
。注入$route
控制器,然后reloadRoute
在上创建一个方法$scope
。
$scope.reloadRoute = function() {
$route.reload();
}
然后,您可以在这样的链接上使用它:
<a ng-click="reloadRoute()" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
此方法将导致当前路由重新加载。但是,如果要执行完全刷新,则可以注入$window
并使用它:
$scope.reloadRoute = function() {
$window.location.reload();
}
以后编辑(UI路由器):
正如JamesEddyEdwards和Dunc在回答中所提到的,如果您使用angular-ui / ui-router,则可以使用以下方法重新加载当前状态/路由。只是注入$state
而不是$route
然后您有:
$scope.reloadRoute = function() {
$state.reload();
};
window
对象可以通过$window
服务获得,以方便进行测试和模拟,您可以使用以下方法:
$scope.reloadPage = function(){$window.location.reload();}
和:
<a ng-click="reloadPage" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
$window
代替window
。
角2+
我在搜索Angular 2+时发现了这一点,因此方法如下:
$window.location.reload();
在Angular 1.5上-尝试了上述一些仅希望在不刷新全页的情况下重新加载数据的解决方案之后,我在正确加载数据时遇到了问题。但是我注意到,当我转到另一条路线然后返回到当前路线时,一切正常,但是当我只想使用来重新加载当前路线时$route.reload()
,某些代码将无法正确执行。然后,我尝试通过以下方式重定向到当前路由:
$scope.someFuncName = function () {
//go to another route
$location.path('/another-route');
};
并在模块配置中添加另一个when
:
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/first-page', {
templateUrl: '/first-template',
controller: 'SomeCtrl'
}).when('/another-route', {//this is the new "when"
redirectTo: '/first-page'
});
}])
对我来说也很好 它不会刷新整个页面,而只会导致当前控制器和模板重新加载。我知道这有点棘手,但这是我找到的唯一解决方案。
var reload = $location.url(); $location.url(''); $timeout(function() { $location.url(reload); });
; 无需创建随机路由。但是,看看哪些代码不会为您重新评估会很有趣。看起来甚至redirectTo
s和resolve
函数都可以正常执行$route.reload()
(请参阅console.log)。
<a title="Pending Employee Approvals" href="" ng-click="viewPendingApprovals(1)">
<i class="fa fa-user" aria-hidden="true"></i>
<span class="button_badge">{{pendingEmployeeApprovalCount}}</span>
</a>
并在控制器中
$scope.viewPendingApprovals = function(type) {
if (window.location.hash.substring(window.location.hash.lastIndexOf('/') + 1, window.location.hash.length) == type) {
location.reload();
} else {
$state.go("home.pendingApproval", { id: sessionStorage.typeToLoad });
}
};
并在路由文件中
.state('home.pendingApproval', {
url: '/pendingApproval/:id',
templateUrl: 'app/components/approvals/pendingApprovalList.html',
controller: 'pendingApprovalListController'
})
因此,如果URL中传递的ID与单击锚点所调用的函数的ID相同,则只需重新加载即可,否则请遵循请求的路由。
如果有帮助,请帮助我改善此答案。任何,欢迎提出建议。
这可以通过在JavaScript中调用reload()方法来完成。
location.reload();