$routeProvider.when('/', ...) не действует, когда включен режим html5
Решение проблемы: URL, который вы пишете в базовом теге, должен иметь косую черту.
У меня есть следующая конфигурация маршрутов, но шаблон не запрашивается, если включен режим html5. Нет ошибок, нет попыток получить ресурс с сервера. Ни изменение базового URL, ни установка префикса с помощью hasPrefix('!')
не влияет на это поведение
angular
.module('beneficiaryBanks')
.config(configRoutes);
configRoutes.$inject = ['$routeProvider','$locationProvider'];
function configRoutes($routeProvider, $locationProvider) {
$routeProvider
.when('/',
{
controller: 'beneficiaryBanksListController',
controllerAs: 'listVM',
templateUrl: 'BeneficiaryBanksList.cshtml'
});
$locationProvider.html5Mode(true);
}
Похоже, что angular не соответствует текущей ссылке с '/'.
обновление 1
Отладка показывает, что для URL http://localhost:8080/APS/Home/BeneficiaryBanksModule
и базовый адрес APS/Home/BeneficiaryBanksModule
угловой видит маршрут как /BeneficiaryBanksModule
который не совпадает с /
тогда как маршрут становится просто /
когда режим html5 отключен.
3 ответа
Проблема была в базовом теге. Если это не заканчивается косой чертой /
angular обрабатывает последнюю часть как имя файла и удаляет его.
Вот почему я видел /BeneficiaryBanksModule
вместо /
Как я мог видеть здесь, есть некоторые конфигурации, которые вам, возможно, придется сделать для достижения этой комбинации AngularJS и IIS Express с активированным режимом html5.
Я не знаю, читали ли вы эту статью, но есть несколько советов, как заставить ее работать.
Это потому, что ваш запрос обрабатывается самим сервером, а не вашим угловым приложением.
Попробуйте прочитать несколько статей о том, как настроить сервер для работы в режиме html5:
https://dzone.com/articles/fixing-html5mode-and-angular http://www.thinkovator.com/blog/post/angularjs-html5-mode-and-iis-rewrite/
Надеюсь, это поможет.