J'avais l'impression qu'Angular réécrirait les URL qui apparaissent dans les attributs href des balises d'ancrage dans les tempaltes, de manière à ce qu'elles fonctionnent en mode html5 ou en mode hashbang. La documentation du service de localisation semble indiquer que la réécriture de lien HTML prend en charge la situation de hachage. Je m'attendrais donc à ce que, lorsqu'ils ne sont pas en mode HTML5, des hachages soient insérés, et en mode HTML5, ils ne le seraient pas.
Cependant, il semble qu'aucune réécriture n'ait lieu. L'exemple suivant ne me permet pas de simplement changer de mode. Tous les liens de l'application doivent être réécrits à la main (ou dérivés d'une variable au moment de l'exécution. Suis-je obligé de réécrire manuellement toutes les URL en fonction du mode?
Je ne vois aucune réécriture d'url côté client en cours dans Angular 1.0.6, 1.1.4 ou 1.1.3. Il semble que toutes les valeurs href doivent être précédées de # / pour le mode hashbang et / pour le mode html5.
Une configuration est-elle nécessaire pour provoquer la réécriture? Est-ce que je lis mal les documents? Faire autre chose de stupide?
Voici un petit exemple:
<head>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.3/angular.js"></script>
</head>
<body>
<div ng-view></div>
<script>
angular.module('sample', [])
.config(
['$routeProvider', '$locationProvider',
function ($routeProvider, $locationProvider) {
//commenting out this line (switching to hashbang mode) breaks the app
//-- unless # is added to the templates
$locationProvider.html5Mode(true);
$routeProvider.when('/', {
template: 'this is home. go to <a href="https://stackoverflow.com/about"/>about</a>'
});
$routeProvider.when('/about', {
template: 'this is about. go to <a href="https://stackoverflow.com/"/>home</a'
});
}
])
.run();
</script>
</body>
Addendum: en relisant ma question, je vois que j'ai utilisé le terme «réécriture» sans beaucoup de clarté sur qui et quand je voulais faire la réécriture. La question est de savoir comment obtenir Angular pour réécrire les URL lors du rendu des chemins et comment lui faire interpréter les chemins dans le code JS de manière uniforme dans les deux modes. Il ne s'agit pas de savoir comment amener un serveur Web à effectuer une réécriture compatible HTML5 des requêtes.