Восклицательный знак после хеша (#!) В приложении 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: '/'
});
});
Ответы
Ответ 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.