Угловая чувствительность к регистру
Мне не удалось найти прямой ответ на этот вопрос, который заставляет меня поверить, что это действительно действительно просто. В любом случае, здесь я иду.
Все вызовы в моем $routeProvider работают отлично, но чувствительны к регистру. Вот пример кода:
config(function ($routeProvider) {
$routeProvider.
when('/', { controller: 'TmpCtrl', templateUrl: '/app/home.html' }).
when('/foo', { controller: 'TmpCtrl', templateUrl: '/app/foo.html' }).
otherwise({ redirectTo: '/' });
});
Что мне нужно добавить, чтобы '/Foo', '/fOO', '/FoO' и т.д. все перенаправлялись к одному и тому же пути?
Ответы
Ответ 1
Существует опция, которую вы можете передать в $routeProvider для переключения чувствительности к регистру:
config(function ($routeProvider) {
$routeProvider.
when('/', { controller: 'TmpCtrl', templateUrl: '/app/home.html' }).
when('/foo', { controller: 'TmpCtrl', templateUrl: '/app/foo.html', caseInsensitiveMatch: true }).
otherwise({ redirectTo: '/' });
});
Ответ 2
Маршруты, настроенные с помощью функции config, по умолчанию чувствительны к регистру. Рассмотрим маршрут ниже. Обратите внимание, что маршрут (/home) в нижнем регистре.
$routeProvider
.when("/home", {
templateUrl: "Templates/home.html",
controller: "homeController",
controllerAs: "homeCtrl",
})
Если мы введем следующий URL в браузере, мы увидим home.html, как и ожидалось.
http://localhost:51983/HOME
Если вы введете следующий URL, вы увидите пустую страницу макета. Это потому, что по умолчанию маршруты чувствительны к регистру
http://localhost:51983/HOME
Чтобы сделать маршрут без учета регистра, установите для свойства caseInsensitiveMatch
значение true, как показано ниже.
$routeProvider
.when("/home", {
templateUrl: "Templates/home.html",
controller: "homeController",
controllerAs: "homeCtrl",
caseInsensitiveMatch: true
})
Чтобы сделать все маршруты без учета регистра, установите свойство caseInsensitiveMatch
в $routeProvider
, как показано ниже.
$routeProvider.caseInsensitiveMatch = true;