41 votes

Point d'exclamation après hash (#!) Dans l'application angularjs

je viens de remarquer que j'ai un point d'Exclamation après le dièse (#!) dans toutes mes voies, je ne suis pas sûr de savoir comment et pourquoi je les ai eu car aujourd'hui je n'ai pas eu, est-il une solution pour se débarrasser d'eux et j'apprécierais si quelqu'un peut m'expliquer ce que c'est et comment je l'ai eu. Donc la seule solution que j'ai trouvé pour l'instant est de mettre manuellement le point d'Exclamation à chaque href dans mon application, mais cela m'ennuyer et je n'ai aucune idée de quoi faire. J'ai généré mon application avec générateur yeoman et mon app.js ressemble à ceci

angular
  .module('appNameApp', [
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ngRoute',
    'ngSanitize',
    'ngTouch'
  ])
  .config(function ($routeProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'views/main.html',
        controller: 'MainCtrl',
        controllerAs: 'main'
      })
      .when('/about', {
        templateUrl: 'views/about.html',
        controller: 'AboutCtrl',
        controllerAs: 'about'
      })
      .when('/jaspo', {
        templateUrl: 'views/about.html',
        controller: 'jaspoCtrl',
        controllerAs: 'vm'
      })
      .otherwise({
        redirectTo: '/'
      });
  });

90voto

Skrew Points 198

Modifiez ces 2 lignes:

   .config(function ($routeProvider) {
$routeProvider
 

être :

     .config(function ($routeProvider,$locationProvider) {
    $locationProvider.hashPrefix('');
    $routeProvider
 

Le crédit devrait aller à: https://stackoverflow.com/a/41223197/1564146

32voto

Sheki Points 615

Vous avez probablement mis à jour la version angulaire de 1.5 à 1.6, car sur 1.6, l’équipe angulaire a décidé de changer le préfixe de hachage $ location par défaut en '!'. Comme suggéré par @Skrew, vous pouvez changer cela en '' avec $locationProvider.hashPrefix('');

Ici vous pouvez lire à ce sujet.

2voto

wanyo Points 63

Votre fonction manque dans un fournisseur de site et vous devez spécifier html5Mode pour le fournisseur de site. Voir https://docs.angularjs.org/api/ng/provider/$locationProvider . Au lieu de:

.config(function ($routeProvider) { $routeProvider .when('/', {

essayer:

.config(function ($locationProvider, $routeProvider) { $locationProvider.html5Mode({ enabled:true }); $routeProvider .when('/',{

Par défaut, vous devez également spécifier une balise de base <base href="http://stackoverflow.com/"> dans votre fichier index.html.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X