Angesichts meines grundlegenden Beispiels einer Angular App, die in einem <base href="/test/">
Verzeichnis lebt, was ist der beste Weg, um die Anwendung zurück zum Home (oder Root) -Pfad zu senden? Alle Links im Menü-Snippet (unten) funktionieren, der Link "Home" bewirkt jedoch, dass der IE die App (speziell bei folgenden Anfragen) neu lädt (HomeCtrl
).Wie setze ich Root-Pfad in Angular, wenn Sie BASE-Tag und HTML5Mode verwenden?
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>
aktualisieren
Jede Anforderung an die Wurzel, in IE9, reruns die JS-Datei und dann löst die Routenereignisse zweimal aus.
LOG: MainCtrl Loaded!
LOG: routeChangeStart[object Arguments]
LOG: routeChangeSuccess[object Arguments]
LOG: routeChangeStart[object Arguments]
LOG: routeChangeSuccess[object Arguments]
LOG: HomeCtrl Called!
nur für Tritte, ändern Sie Ihre ansonsten Anweisung, um woanders umzuleiten und sehen, was passiert ... –