角度ui路由器后退按钮问题

时间:2016-02-24 10:28:25

标签: javascript angularjs angular-ui-router browser-history

'use strict';

angular.module('cbApp')
  .config(function ($stateProvider) {
    $stateProvider
      .state('search', {
        url: '/college/search',
        templateUrl: 'app/collegesearch/views/collegesearch.html',
        controller: 'collegeSearchCtrl'
      })

      .state('searchCollegeFilter', {
        url: '/college/search/:streamId?cities&courses&branches&ordering',
        templateUrl: 'app/collegesearch/views/collegesearch.html',
        controller: 'collegeSearchCtrl'
      });

  });

这里我的应用程序调用第一个状态,即使用url / college / search搜索'search'。在控制器内部,我转换到另一个状态searchCollegeFilter。 我想做的是当用户点击浏览器后退按钮时,将用户导回到他们来自的后面。说他们来自'/'我希望他们回到主页。但在浏览器的历史记录中,有2个学院/搜索条目。我希望这只是第一次发生。

2 个答案:

答案 0 :(得分:1)

对于这个北方是使用angularjs,你需要在导航之前观察浏览器返回事件" window.onhashchange"。通过观察您可以检查并重定向默认页面

答案 1 :(得分:1)

我在不同的应用程序中所做的事情将达到目的:

基本上:指定父状态

- >然后逻辑变得容易。

您无需具体了解历史记录或后退按钮或类似内容。

<强>基本上

- &GT;入住

  • $ rootScope。$ on(“$ onstateChange”,...

- &GT;如果

  • fromState.parent等于toState.parent
  • 然后 $ window.history.replaceState({},“我的详细信息状态页”,$ state.url(toState)