8

ディレクトリにある 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!
4

1 に答える 1