2017-02-08 5 views
1

Я просто заметил, что по какой-то причине, я получаю это:Weird URL заканчивая AngularJS маршрутизации

http://localhost/ReportsWeb/#!/

вместо этого: http://localhost/ReportsWeb/#/

восклицательный знак добавляется ... почему, любые идеи , не может определить причину, по которой его где.

Очевидно, что если бы я перейти к http://localhost/ReportsWeb, то URL становится http://localhost/ReportsWeb/#!/

UPDATE

Спасибо, ребята за помощь. Эти два варианта работают отлично:
1)
набор $locationProvider.html5Mode(true)
добавить <base href="/ReportsWeb/">
2)
набор $locationProvider.html5Mode(false);
набор $locationProvider.hashPrefix('');

Какой вариант "более правильный" способ справиться с этим?

Для меня второй вариант выглядит правильно, мне не нужно делать никаких изменений, чтобы мой проект работал. В первом случае мне нужно установить базовый элемент, но угловая маршрутизация не работает, мне, вероятно, придется изменить все «/ #/Path», чтобы исключить хэш-тег. Итак, я возьму вариант # 2)

благодаря

+1

Возможный дубликат [Почему мой url содержит "!" при использовании углового?] (http://stackoverflow.com/questions/42033863/why-does-my-url-contains-when-using-angular) –

+0

@Pritam Banerjee, похоже, но не дублируется, мне нужно знать разницу между этими двумя опциями – monstro

ответ

3

Hashbang режима трюк, который AngularJS использует для обеспечения глубоких связей возможностей для ваших Угловые приложения. В режиме hashbang (возврат к режиму html5) пути URL-адреса имеют добавочный символ #. Они не переписывают теги и не требуют поддержки на стороне сервера. Режим Hashbang - это режим по умолчанию, который использует AngularJS, если не сказано иначе. Hashbang URL выглядит следующим образом:

http://localhost/ReportsWeb/#!/ 

Чтобы быть явным и настроить режим hashbang, он должен быть настроен в функции конфигурации на модуле приложения. Мы также можем настроить hashPrefix, который в режиме hashbang является префиксом !. Этот префикс является частью резервного механизма, который использует Angular для старых браузеров. Мы также можем настроить этот символ.

angular.module('myApp', ['ngRoute']) 
    .config(['$locationProvider', function($locationProvider) { 
      $locationProvider.html5Mode(false); 
      $locationProvider.hashPrefix(''); 
}]); 
+0

спасибо, это тоже помогло !! – monstro

2

Попробуйте это, должно работать. Вам нужно установить html5Mode истину где вы обработку ваших угловых маршрутов, вот пример код, что ваше приложение должно выглядеть

var myApp = angular.module('myApp', ['ngRoute']) 
myApp.config(function ($routeProvider, $locationProvider) { 
    $routeProvider 
    .when('/', { 

    }) 
    .otherwise({redirectTo: '/'}) 

    $locationProvider.html5Mode(true) 
}) 
+0

спасибо, он работает, просто нужно добавить monstro

+0

Нет проблем, html5Mode удалит оставшиеся #, если вы тоже этого захотите. – Roadhouse

+0

К сожалению, это сломало маршрутизацию – monstro

Смежные вопросы