2015-04-03 62 views
0

我在点击浏览器返回按钮后尝试返回“旧”内容时遇到了麻烦。在浏览器上返回以前的内容“返回”按钮点击

目前我正在试图与AngularJsSymfony2分页:

app.js

var fcrApp = angular.module('fcrApp', ['ngRoute', 'fcrController']); 

fcrApp.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) { 

    $locationProvider.html5Mode(true); 
}]); 

controller.js

var fcrController = angular.module('fcrController', []); 

fcrController.controller('MainController', function ($scope, $compile, $http, $location) { 

    $scope.goToPage = function (host, path) { 
     var ajaxUrl = changeUrl(host, path); 
     getContent(ajaxUrl, path); 
     changeBrowserUrl(path); 
    } 

    function changeBrowserUrl(path) { 
     $location.path(path); 
    } 

    function changeUrl(host, path) { 
     var newString = host.replace("www.", ""); 
     var newHost = newString.replace("http://", "http://ajax."); 

     return newHost + path; 
    } 

    function getContent(link, path) { 
     $http.get(link, { cache: true}).success(function (data) { 
      angular.forEach(data.divs, function (value, key) { 
       var compiledElement = $compile(value)($scope); 
       $('#' + key).html(compiledElement); 
      }); 

      $scope.title = data.title; 
      if (data.robots) { 
       $('meta[name=robots]').attr('content', data.robots); 
      } 

      $('html, body').animate({ 
       scrollTop: $("#" + data.scrollTo).offset().top 
      }, 500); 
     }).error(function() { 
      location.assign(linkOld); 
     }); 
    } 
}); 

HTML:

<a ng-click="goToPage(host, url)">page</a> 

当用户点击的页面链接,新的HTML内容被接收超过$http.get()与旧的替换。问题是,如果我想用返回按钮返回,则URL也会更改为旧的,但当前的内容不会。有没有解决方案来实现这一目标?

谢谢。

+0

我刚刚遇到同样的问题。有趣的是,在我的情况下,这仅仅适用于不使用任何路由''ngRoute'' /''ui.router''的应用程序。你有解决这个问题的好运吗? – iiminov 2016-03-10 15:35:47

回答

1

我解决了我用我的应用程序遇到的问题。我前几天注意到的是,每次按/去Back浏览器都会从缓存中加载数据。

在我的情况

很幸运,因为我在用我所做的是增加了一个头能与像这样的请求捆绑服务加载我的数据:

myApp.config(['$provide', '$httpProvider', function ($provide, $httpProvider) { 
    // snip(...) 
    // Prevent content creep on browser Back button 
    $httpProvider.defaults.headers.common['Cache-Control'] = 'no-cache'; 
}]); 

现在,每当我按下/时间去Back的浏览器被迫从服务器重新加载数据。

希望这可以帮助别人。

相关问题