angular js浏览器后退按钮在路由时不起作用

时间:2013-06-06 16:27:12

标签: angularjs

我在我的应用上有这个路由代码:

var app = angular.module('docFinder', [])

app.config(function($routeProvider){
    $routeProvider.
      when('/', 
      {            
        controller: docTable,
        templateUrl: 'partials/finder.html'
      }).
      when('bio/:finderId', 
      {          
        controller: bioCtrl,
        templateUrl: 'partials/bio.html'
      }).
      otherwise({redirectTo: '/'});
});

当我启动我的应用程序并转到root时,单击指向第二条路径的链接

一旦我到达那里,我点击浏览器上的后退按钮并且它不会返回它只刷新我当前的页面,对问题的任何想法?

修改

解决方案

<tr ng-repeat="doc in providers" ng-mouseover="mouseOverDoc(doc)" ng-mouseleave="mouseLeave()">      
   <td><a href="#bio/{{doc.provider.Id}}"> {{doc.provider.FirstName}} </a></td>

</tr>

2 个答案:

答案 0 :(得分:8)

在链接上使用#/。它似乎是角js上的bug。 例如:

 <td><a href="#/bio/{{doc.provider.Id}}"> {{doc.provider.FirstName}} </a></td>

答案 1 :(得分:5)

这似乎不是我的错误。

AngularJS为$ location服务提供了两种配置模式,用于控制浏览器地址栏中URL的格式。

  1. Hashbang模式(#!)
  2. HTML5模式
  3. 如果将配置设置为HTML5模式,则可以解决此问题 使用{ html5Mode: true }