AngularJS маршруты с параметрами в пути не загружаются в режиме HTML5 при переходе непосредственно к URL
У меня есть несколько указанных маршрутов:
app.config(["$routeProvider", "$locationProvider", function($routeProvider, $locationProvider) {
$routeProvider.
when("/", {
templateUrl: "/ajax/home.html",
controller: "HomeController"
}).
when("/test/:id", {
templateUrl: "/ajax/test.html",
controller: "TestController",
resolve: {
data: function ($q, $http, $route) {
var deferred = $q.defer();
var params = $route.current.params;
$http({method: "GET", url: "/api/test/" + params.id + ".json"})
.success(function(data) {
deferred.resolve(data)
})
.error(function(data){
deferred.reject();
});
return deferred.promise;
}
}
});
$locationProvider.html5Mode(true);
}]);
Когда есть ссылка на другой маршрут, ведущий к/test/x
работает нормально. Он также отлично работает, когда не в режиме HTML5. Однако при переходе непосредственно к/test/x
в режиме HTML5 маршрут не загружается, и ни один из элементов в разрешении не выполняется.
Я просмотрел большую часть документации AngularJS и до сих пор не могу понять это. плз :(
Изменить: я сделал больше тестирования, и это только для маршрутов, которые имеют косую черту в них. Кажется, не имеет значения, есть ли параметр (например,:id
в это или нет. Собираюсь/hello
(если этот маршрут определен) работает для всех случаев в режиме HTML5 и не HTML5. Собираюсь на что-то вроде/hello/world
всегда работает в режиме, отличном от HTML5, и работает в режиме HTML5, когда маршрут изменяется по сравнению с другим путем нажатия ссылки. Обновление при включении/hello/world
переход к адресной строке и нажатие клавиши ввода или нажатие на ссылку, указывающую на нее с другого веб-сайта, приводит к перезагрузке страницы индекса, но не фактическому маршруту.