【问题标题】:Back button with nested states in Angular RouterAngular路由器中具有嵌套状态的后退按钮
【发布时间】:2013-03-30 06:45:06
【问题描述】:

我有一个使用新的、基于状态的ui-router 的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/fooLayout.html 视图,而不是它的子视图/foo/bazView.html。现在奇怪的是,如果你再次点击返回按钮,你会被带到/foo/bar 并且它会正确呈现,包括它的子视图!使用后退按钮时似乎无法识别嵌套视图,至少,如果您同时输入抽象视图。

$locationProvider.html5Mode 未启用,但启用它没有任何区别。

我正在使用 AngularJS 1.0.5 和 ui-router 0.0.1-2013-03-20。

任何想法可能导致此问题,以及我如何解决它?

【问题讨论】:

    标签: angularjs back-button angular-ui angularjs-routing angular-routing


    【解决方案1】:

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

    【讨论】:

    • 很高兴您在第二天找到了解决方案.. :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 2016-04-06
    • 2015-12-01
    • 2019-03-15
    • 1970-01-01
    • 2016-11-06
    • 2017-03-04
    相关资源
    最近更新 更多