ディレクトリにある Angular アプリの基本的な例を考えると、<base href="/test/">
アプリケーションをホーム (またはルート) パスに戻す最良の方法は何ですか? メニュー スニペット (以下) のすべてのリンクは機能しますが、「ホーム」リンクを使用するとHomeCtrl
、後続の要求で IE がアプリ (具体的には ) をリロードします。
app.js
var basic = '<h1>{{title}}</h1><p>{{body}}</p>';
var app = angular.module('website', []);
app.config( function($routeProvider, $locationProvider) {
$routeProvider.
when('/', { template: basic, controller: HomeCtrl }).
when('/about', { template: basic, controller: AboutCtrl }).
when('/experiments', { template: basic, controller: ExperimentsCtrl }).
when('/:alias', { template: basic, controller: PageCtrl, resolve: { alias: resolveAlias } }).
otherwise({ redirectTo: '/' });
$locationProvider.html5Mode('true');
} );
menu.html
<base href="/test/">
....
<div id="menu">
<a href="./" class="btn">Home</a>
<a href="./about" class="btn">About</a>
<a href="./experiments" class="btn">Experiments</a>
<a href="./unicorn" class="btn">Unicorn</a>
</div>
アップデート
IE9 では、ルートへの各リクエストで JS ファイルが再実行され、ルート イベントが 2 回トリガーされます。
LOG: MainCtrl Loaded!
LOG: routeChangeStart[object Arguments]
LOG: routeChangeSuccess[object Arguments]
LOG: routeChangeStart[object Arguments]
LOG: routeChangeSuccess[object Arguments]
LOG: HomeCtrl Called!