我正在使用带有Angular的Laravel,当我切换到特定路线时需要整页刷新。
点击此链接时
<a href="admin/pages/{{page.id}}/content">Manage Content</a>
然后我的角度应用程序路线看起来像这样
.when(baseUrl + '/admin/pages/:id/content', {
templateUrl: 'page-content.html',
controller: 'PageContentController'
});
模板 page-content.html
<ng-include src="getEditView()"></ng-include>
这会动态获取页面,如下面的控制器中所示
Pages.controller('PageContentController', [
'$scope', '$window', '$routeParams', '$location', 'dataService',
function($scope, $window, $routeParams, $location, dataService) {
$scope.id = $routeParams.id;
pageRefresh();
function pageRefresh() = {$window.location.reload()}
dataService.one('pages', $scope.id).then(function(response){
$scope.page = response;
$scope.getEditView = function() {
return 'templates/' + $scope.page.edit_template;
}
});
}]);
我认为调用pageRefresh()会起作用,但它会在无限循环中刷新页面。我只需要它做一次。我哪里错了?
我也尝试了$route.reload();
,但我需要重新加载整页,而不仅仅是视图刷新。
答案 0 :(得分:0)
您正在从控制器启动调用pageRefresh();
,这会导致infinte循环..
你必须有一些逻辑/条件才能刷新,所以只在那个条件下调用pageRefresh()
每当你通过锚点去特定链接时,它都将是整页刷新
<a href="admin/pages/{{page.id}}/content">Manage Content</a>
修改强>
根据评论提出建议。您可以做的是具有初始化控制器的init()
功能。和reset()
函数,将值重置为原始状态。
现在您应该将这些功能与reload()
一起使用,以获得整页刷新的感觉。
答案 1 :(得分:0)
在您的锚点上设置ng-click,调用pageRefresh函数并将参数传递给您,这是您想要的URL。然后使用$ locationChangeSuccess在重新加载后将$ location.path设置为url,你必须在此函数中检查它是否是页面重新加载。这样你就不会得到无限循环。