Подтвердить что ты не робот

Восклицательный знак после хеша (#!) В приложении angularjs

Я только заметил, что у меня есть восклицательный знак после хэша (#!) во всех моих маршрутах, я не уверен, как и почему я их получил, потому что сегодня у меня их не было, есть ли какое-то решение, чтобы избавиться из них, и я был бы признателен, если кто-нибудь сможет объяснить мне, что это такое, и как я его получил. Так что единственное решение, которое я нашел до сих пор, - это поставить знак Exclamation на каждый href в моем приложении, но это раздражает меня, и я не знаю, что делать. Я создал мое приложение с генератором йома, и мой app.js выглядит следующим образом

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: '/'
      });
  });
4b9b3361

Ответ 1

Измените эти две строки:

  .config(function ($routeProvider) {
$routeProvider

:

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

Кредит должен перейти к: fooobar.com/questions/196128/...

Ответ 2

Вероятно, вы обновили версию angular с 1.5 до 1.6, потому что на 1.6 команда angular решила изменить хэш-префикс $location по умолчанию на '!'. Как и @Skrew, вы можете изменить это на '' с помощью $locationProvider.hashPrefix('');

Здесь вы можете прочитать об этом.

Ответ 3

В вашей функции отсутствует locationProvider и вам нужно указать html5Mode для locationProvider. См. https://docs.angularjs.org/api/ng/provider/$locationProvider. Вместо:

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

попробовать:

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

По умолчанию вам также нужно указать базовый тег <base href="/"> в файле index.html.