如何让浏览器的后退按钮将我带到以前的URL?(角度ui路由器)

Zac*_*ack 10 browser url-routing back angularjs angular-ui-router

我正在使用有角度的ui路由器进行我的前端路由,我似乎无法通过浏览器的后退按钮将我带到最新的URL.

让我来证明一下.

让我们说我从这里开始

/#/myapp/
Run Code Online (Sandbox Code Playgroud)

经过一些点击后,我动态调整了我的网址

 /#/myapp/12345
Run Code Online (Sandbox Code Playgroud)

假设我在页面上保留时单击一个日期选择器

/#/myapp/12345?start=2016-01-21&end=2016-01-28
Run Code Online (Sandbox Code Playgroud)

我可以通过使用$ scope'd函数与$ location.url一起完成此操作

真棒.到现在为止还挺好.

假设我通过点击导航远离此

<a href="#"> My App </a>
Run Code Online (Sandbox Code Playgroud)

其中,由于我设置路由的方式

myApp.config([
    '$stateProvider', '$urlRouterProvider',
    function($stateProvider, $urlRouterProvider) {

        $stateProvider.state('myapp',
            url : '/myapp/*id?start&end',
            templateUrl : '<path to my template>',
            controller : '<name of my controller>'
        );

        // more routes

        $urlRouterProvider.otherwise('/myapp/');

    }
]);
Run Code Online (Sandbox Code Playgroud)

将默认返回初始状态

/#/myapp
Run Code Online (Sandbox Code Playgroud)

好的,到目前为止,还是那么好.但是,当我点击浏览器的后退按钮时,我会被带回去

/#/myapp
Run Code Online (Sandbox Code Playgroud)

而不是我期望的

/#/myapp/12345?start=2016-01-21&end=2016-01-28
Run Code Online (Sandbox Code Playgroud)

我只能猜测我在浏览页面时生成的中间网址没有被浏览器的历史记录捕获...我认为这是合理的.如何让我的浏览器识别这些中间步骤,以便我可以正确回溯?

Jor*_*ijk 1

请看一下下面的答案 ,需要采取四个步骤

  1. 独特的网址
  2. 会话服务
  3. 国家历史
  4. 以及定位服务