AngularJS enruta con parámetros en la ruta que no se carga en modo HTML5 cuando va directamente a las URL
Tengo algunas rutas especificadas:
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);
}]);
Cuando hay un enlace en otra ruta que conduce a/test/x
, funciona bien. También funciona bien cuando no está en modo HTML5. Sin embargo, cuando navegas directamente a/test/x
en el modo HTML5, la ruta no se carga y ninguna de las cosas en la resolución se ejecuta.
He revisado gran parte de la documentación de AngularJS y todavía no puedo resolver esto. por favor :(
Edición: he realizado más pruebas y esto es solo para rutas que tienen una barra diagonal. No parece importar si hay un parámetro (como:id
) en ello o no. Caminante a/hello
(si esa ruta está definida) funciona para todos los casos tanto en modo HTML5 como no HTML5. Yendo a algo como/hello/world
siempre funciona en modo no HTML5 y funciona en modo HTML5 cuando la ruta se cambia desde otra ruta haciendo clic en un enlace. Refrescante cuando en/hello/world
, ir a la barra de direcciones y presionar Intro o hacer clic en un enlace que apunta a él desde otro sitio web hace que se vuelva a cargar la página de índice pero no la ruta real.