2016-12-25 53 views
5

Używam Angularu do nawigacji w mojej aplikacji. Zazwyczaj URL powinien wyglądać następująco:Co oznacza #! znaczy w ui.router?

http://localhost:8001/#/start 

Ale w moim przypadku wygląda to tak:

http://localhost:8001/#!/start 

Co to znaczy?

Zauważyłem również, że jeśli wywołuję adres URL z tej strony, która różni się od mojej strony początkowej, zawsze otrzymuję przekierowanie, ponieważ adres URL wydaje się być nieprawidłowy.

mainApp.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) { 
'use strict'; 
$urlRouterProvider.otherwise('start'); 
$stateProvider 
    .state('start', { 
     url: '/start', 
     templateUrl: 'views/start.html' 
    }) 
    .state('registration-activate', { 
     url: '/registration/activate/{activationKey}', 
     templateUrl: 'views/registration-activation.html' 
    }) 
    ; 
    }]); 

Zawsze, gdy próbuję połączyć się z localhost: 8001/#/registration/activate/xyz, zostaje przekierowany do strony początkowej.

+2

http://stackoverflow.com/questions/40478676/i-am-using-angular- i-mój-url-zawsze-ma-wykrzyknik-znak/40478862 – Taki

+0

Sprawdziłem moją konfigurację, ale nie ustawiłem hashPrefix. Czy to jest kwestia, której używam do symulowania serwera? – Kahuna

Odpowiedz

0

Jeśli przeglądarka jest angularjs przeglądarek HTML5 przekieruje go do #!

W przeciwnym razie będzie to tylko #.

Przeczytaj tę documentation here na $location, aby dowiedzieć się więcej o tym, dlaczego tak się dzieje.

  • Otwarcie regularnej URL w przeglądarce starszych -> przekierowuje do adresu URL hashbang
  • Otwarcie hashbang URL w nowoczesną przeglądarkę -> przepisuje do zwykłego URL
+0

OK, ale dlaczego nie mogę otworzyć adresu URL? Zawsze jestem przekierowywany na stronę początkową. – Kahuna

2

Dobra chłopaki , dziękuję za wyjaśnienia. postanowiłem mój problem, że nie mogę zadzwonić do adresu URL z linkiem po prostu dodając to do mojej konfiguracji:

$locationProvider.hashPrefix('');