新しい状態ベースのui-routerを使用するAngularJSアプリケーションがあります。私のアプリケーションには、トップレベルのビューと入れ子のビューの3つのビューがあります。角度ルータにネストされた状態の戻るボタン
次のような構造は基本的には次のとおりです。
/ => 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',
},
'[email protected]': {
templateUrl: '/home/firstHomeView.html'
},
'[email protected]': {
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'
});
問題は予想通り、基本的にはすべてがあなたの周りをクリックするか、手動で入力したときに動作すること、ですブラウザの[戻る]/[進む]ボタンを使用しているときは機能しません。
たとえば、/foo
に行くと、あなたは/foo/bar
になります。 /foo/baz
に行くリンクをクリックすると、すべての問題は解決します。その後、/
にリンクするリンクをクリックしてください。
戻るボタンを押すと、/foo/baz
(これは正しい)に戻りますが、サブビュー/foo/bazView.html
ではなく、/foo/fooLayout.html
の表示のみがレンダリングされます。奇妙なことは、戻るボタンをもう一度押すと、/foo/bar
に移動し、サブビューも含めて正しくレンダリングされるようになりました。同時に、抽象ビューを入力すると、少なくとも、戻るボタンを使用すると入れ子にされたビューが認識されないように見えます。
$locationProvider.html5Mode
は有効になっていませんが、有効にしても効果はありません。
私はAngularJS 1.0.5とui-router 0.0.1-2013-03-20を使用しています。
この問題を引き起こす原因は何か、どのように解決できるのでしょうか?
あなたは翌日に解決策を見つけました。:) – Vignesh