AngularJS convertissant mon ng-href url "slash" en "% 2f"

J'ai une application angularJS qui est une galerie. Pour chaque image, associée à elle est un ng-href avec #/{{files.id}} .

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

Cependant, lorsque je clique dessus, l'URL qui est finalement affichée est

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

Qui détruit mon routage angulaire de

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

Quelqu'un peut-il m'expliquer comment coder les URL correctement? Ou utilisez-vous simplement quelque chose qui n'écrit pas la barre oblique?

En raison de aa077e8 , le préfixe hash par défaut utilisé pour les URL de hash-bang de $ a changé de la chaîne vide ('') au bang ('!').

Vous devriez essayer cela.

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' }); }); 

Il existe deux solutions:

Ajouter ! Dans vos ancres:

Le hash bang par défaut a été changé de "" à "!" En angulaire et puisqu'il ne changera probablement pas, vous pourriez simplement prendre l'habitude d'ajouter "#!" Dans vos balises d'ancrage au lieu de "#".

Utilisez $ locationProvider:

Utilisation

$ Location.hashPrefix ("")

Dans la configuration de votre module pour utiliser la chaîne vide en tant que hash bang comme dans le passé!

Je ne dois pas encoder quoi que ce soit ici. Ajoutez simplement * dans votre chemin Param comme mentionné ci-dessous et activez 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 });