2014-07-17 10 views
12

Mam aplikację angularJS, która jest galerią. Dla każdego obrazu, powiązany z nim jest ng-href z #/{{files.id}}.AngularJS konwertuje mój adres URL ng-href "ukośnik" na "% 2f"

<a ng-href="#/{{files.id}}"...

Jednak po kliknięciu go, adres URL, który jest ostatecznie wyświetlany jest

http://localhost:3000/gallery#%2F0

który niszczy moje kątowe ułożenie

when('/gallery/:imageID', { templateUrl: 'load_image.html' }).

Może ktoś wyjaśnić jak poprawnie zakodować adres URL? Lub po prostu użyć czegoś, co nie koduje przedniego ukośnika?

+4

Czy próbowałeś bez '#'? – Blackhole

+1

W moim przypadku musiałem usunąć $ locationProvider.html5Mode (true); –

+0

@LarissaLeite Usunięcie html5Więcej (true) spowoduje wpisanie adresów URL za pomocą # lub #/- po prostu za pomocą/zamiast #/poprawił mój problem. – Spade

Odpowiedz

2

Nie musisz niczego tutaj kodować. Wystarczy dodać * na swojej drodze Param jak wspomniano poniżej i włączyć html5Mode

app.config(function ($routeProvider) { 
    $routeProvider 
    .when('/home', {templateUrl: 'home.html', controller: 'HomeCtrl'}) 
    .when('/base/:path*', {templateUrl: 'path.html', controller: 'pathCtrl'}) 
    .otherwise({redirectTo: '/home'}); 
}); 

$locationProvider.html5Mode({ 
     enabled: true, 
     requireBase: false 
    }); 
13

Ze względu na aa077e8 domyślny hash-prefiks używany do $ lokalizacji URL Hash-bang zmienił się z pustym ciągiem („”) do bang ("!").

Powinieneś tego spróbować.

index.html

<li class="active"><a href="#/">Home</a></li> 
<li><a href="#/about">About</a></li> 

app.js

angular.module('appRoutes',['ngRoute']) 
.config(function($routeProvider, $locationProvider){ 

    $locationProvider.hashPrefix(''); 

    $routeProvider 
     .when('/',{ 
      templateUrl:'app/views/pages/home.html' 
     }) 
     .when('/about',{ 
      templateUrl:'app/views/pages/about.html' 
     }); 
}); 
+0

Dzięki! To działa dobrze.PO powinien zaakceptować tę odpowiedź. – cezar

7

Istnieją dwa rozwiązania:

Nie poleca: Dodaj! w twoich kotwicach:

domyślny hash bang został zmieniony z "" na "!" w kanciastych i ponieważ nie będzie to prawdopodobnie zmiana, możesz zwyczajnie dodać "#!" w tagach kotwicy zamiast "#".

Zalecany: Stosować $ locationProvider:

Zastosowanie

$ location.hashPrefix ("")

w module konfiguracji do wykorzystania pusty łańcuch jako hukiem tylko hash jak za dawnych czasów !!

+0

Dodanie '! #' Jest przestarzałe, prawda? Używam tylko standardowego html '/ my-url' bez żadnego hasha lub grzywki i działa on z wersją 1.6.4 (tryb _html5 włączony_) – aliopi