2016-04-07 10 views
0

ich $routeProvider auf diese WeiseAngularJS Weg funktioniert nicht ohne letzten Schrägstrich/

miNgAppplication.config(['$routeProvider', function ($routeProvider) { 
    $routeProvider 
     .when("/", { 
      templateUrl: "Base/FirstPage", 
      controller: "miNgControllerFirstPage" 
     }) 
}]); 

Das funktioniert so konfiguriert haben, wenn ich die URL mit einem abschließenden Schrägstrich einfügen, zum Beispiel „http://localhost/myApp/“. Es fügt dem URl ein "# /" hinzu und zeigt den korrekten Inhalt an (die finale URL ist "http://localhost/myApp/#/")
Wenn ich den Schrägstrich nicht benutze, funktioniert es nicht, im Grunde ist es, weil es die URL falsch ändert
" http://localhost/myApp "->" http://localhost/myApp#/ ".

Was soll ich tun? Habe ich den ersten when Parameter falsch verwendet, um die erste Seite zu definieren? Oder muss ich etwas korrigieren?

Ich habe bereits versucht, $urlMatcherFactoryProvider.strictMode(true); hinzufügen, aber es funktioniert nicht (nicht sicher, ich habe es richtig gemacht, erste Zeile werden miNgAppplication.config(['$routeProvider', '$urlMatcherFactoryProvider', function ($routeProvider, $urlMatcherFactoryProvider) {, richtig?).

Antwort

1

Verwenden Sie die Methode otherwise, um die Standard-URL festzulegen, wenn nichts übereinstimmt.

miNgAppplication.config(['$routeProvider', function ($routeProvider) { 
    $routeProvider 
     .when("/", { 
      templateUrl: "Base/FirstPage", 
      controller: "miNgControllerFirstPage" 
     }); 
    $routeProvider.otherwise('/'); // <-- this should take the user to the first page. 
}]); 
+0

das funktioniert nicht richtig, ich denke, weil die URL falsch interpretiert wird. Die genaue URL ist "http: // localhost/apps/TestClient". Es konvertiert es in 'http: // localhost/apps/TestClient # /' und das 'sonst' versucht umzuleiten, aber die' templateUrl' wird irgendwie falsch hinzugefügt. Es sucht nicht nach "http: // localhost/apps/TestClient/Base/FirstPage", sondern nach "http: // localhost/apps/Base/FirstPage", was zu einem Fehler in der Konsole führt. Wahrscheinlich wenn URL ist/apps/TestClient/#/Understrand, dass die Basis ist/apps/TestClient /, aber wenn es/apps/TestClient #/es denke, die Basis ist nur/apps/ – Naigel

+0

hmm haben Sie versucht, http://stackoverflow.com/questions/17319715/how-to-set-root-location-for-angularjs-router –

+0

danke für den Vorschlag. Ich fand keine einfache Lösung, ich entschied mich für Routenereignisse zu hören und ändere die URL, wenn sie mit # endet, aber nicht mit/# /. Dies ist eine hässliche Lösung, aber zumindest funktioniert es – Naigel

0

Ich habe keine funktionierende Lösung gefunden. Ich hoffe jemand kann mir einen Hinweis geben, mittlerweile habe ich diesen (hässlichen) Weg gelöst. Grundsätzlich höre ich auf $ route events und umleitung wenn nötig.

miNgAppplication.run(function ($rootScope) { 
    $rootScope.$on("$routeChangeError", function (event, next, current) { 
     if (miLib.endsWith(window.location.href, "#/") && !miLib.endsWith(window.location.href, "/#/")) { 
      event.preventDefault(); 
      var newLink = window.location.href.substr(0, window.location.href.lastIndexOf("#/")) + "/#/"; 
      console.clear(); 
      window.location.href = newLink; 
     } 
    }); 
}); 
Verwandte Themen