2013-01-23 3 views
7

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! 
+0

nur für Tritte, ändern Sie Ihre ansonsten Anweisung, um woanders umzuleiten und sehen, was passiert ... –

Antwort

0

Aus der Dokumentation:

redirectTo – {(string|function())=} – value to update $location path with and trigger route redirection. 

So ist der Browser Umleitung ist Teil der Funktion, die Sie fordern.

Statt:

{ redirectTo: '/' } 

versuchen, die gleiche wie die Heimat Route mit:

{ template: basic, controller: HomeCtrl } 

Ich habe nicht versucht, wie ich in der Lage bin nicht in dieser Minute, aber lassen Sie mich weiß, ob es funktioniert.

Verwandte Themen