Angularjs 角度路由器中具有嵌套状态的后退按钮

Angularjs 角度路由器中具有嵌套状态的后退按钮,angularjs,back-button,angular-ui,angularjs-routing,angular-routing,Angularjs,Back Button,Angular Ui,Angularjs Routing,Angular Routing,我有一个AngularJS应用程序,它使用新的、基于状态的。我的应用程序中有三个不同的视图,其中一个是顶级视图,另外两个是嵌套视图 基本结构如下: / => Top-level view /foo => Abstract view, loads a view that contains a ui-view placeholder /foo/bar => View for the placeholder /foo/baz => View for the placeholde

我有一个AngularJS应用程序,它使用新的、基于状态的。我的应用程序中有三个不同的视图,其中一个是顶级视图,另外两个是嵌套视图

基本结构如下:

/ => Top-level view
/foo => Abstract view, loads a view that contains a ui-view placeholder
/foo/bar => View for the placeholder
/foo/baz => View for the placeholder
路由器设置如下:

app.config(['$urlRouterProvider', '$stateProvider', function ($urlRouterProvider, $stateProvider) {
  'use strict';

  $urlRouterProvider
    .when('/bar', '/foo/bar')
    .otherwise('/');

  $stateProvider
    .state('home', {
      url: '/',
      views: {
        '': {
          controller: 'homeController',
          templateUrl: '/home/homeLayout.html',
        },
        'firstHomeView@home': {
          templateUrl: '/home/firstHomeView.html'
        },
        'secondHomeView@home': {
          templateUrl: '/homme/secondHomeView.html'
        }
      }
    })
    .state('foo', {
      abstract: true,
      templateUrl: '/foo/fooLayout.html',
      controller: 'fooController'
    })
    .state('foo.bar', {
      url: '/foo/bar',
      templateUrl: '/foo/barView.html',
      controller: 'barController'
    })
    .state('foo.baz', {
      url: '/foo/baz',
      templateUrl: '/foo/bazView.html',
      controller: 'bazController'
    });
问题是,当您单击周围或手动键入URL时,基本上一切正常,但当使用浏览器的后退/前进按钮时,一切都不正常

例如,如果您转到
/foo
,您将按预期转到
/foo/bar
。然后,当您单击链接转到
/foo/baz
时,一切正常。然后单击指向
/
的链接,一切正常

如果您现在点击后退按钮,您将返回到
/foo/baz
(这是正确的),但仅呈现
/foo/傻瓜出游.html
视图,而不是其子视图
/foo/bazView.html
。奇怪的是,如果你再次点击后退按钮,你会被带到
/foo/bar
,它会正确渲染,包括它的子视图!使用“后退”按钮时,似乎无法识别嵌套视图,至少在同时输入抽象视图时是这样

$locationProvider.HTML5模式未启用,但启用它没有任何区别

我正在使用AngularJS 1.0.5和ui路由器0.0.1-2013-03-20


有什么想法可能会导致这个问题,以及我如何解决它吗?

我发现了错误:在视图
傻瓜出游.html
中,我使用的是
ng视图
而不是
ui视图
。一旦我改变了,一切都很好:-)

很高兴你在第二天找到了解决方案:)