AngularJS整页刷新

时间:2014-08-01 19:44:50

标签: javascript angularjs

我正在使用带有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();,但我需要重新加载整页,而不仅仅是视图刷新。

2 个答案:

答案 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,你必须在此函数中检查它是否是页面重新加载。这样你就不会得到无限循环。