Gol*_*den 6 back-button angularjs angular-ui angular-routing angularjs-routing
我有一个AngularJS应用程序,它使用新的,基于状态的ui-router.我的应用程序中有三个不同的视图,其中一个是顶级视图,另外两个是嵌套视图.
结构基本如下:
/ => 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
Run Code Online (Sandbox Code Playgroud)
路由器设置如下:
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'
});
Run Code Online (Sandbox Code Playgroud)
问题是,当你点击或手动输入网址时,基本上一切都按预期工作,但是当使用浏览器的后退/前进按钮时它不起作用.
例如,/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.
什么可能导致这个问题的想法,以及我如何解决它?
| 归档时间: |
|
| 查看次数: |
3648 次 |
| 最近记录: |