2012-10-09 10 views
11

¿Cómo puedo redirigir o actualizar la URL? No puedo encontrar ninguna buena documentación sobre esto. Básicamente, lo que quiero hacer es cambiar dinámicamente los $ routeParams y actualizar la URL con el nuevo valor.

Mi código es el siguiente:

if ($routeParams.time) { 
     var url; 
     $routeParams.time = encodeURIComponent(value); 
     url = '/' + $routeParams.time + '/' + 'marketing/networks'; 
     $location.path(url); 
    } else { 
     $routeParams.time = encodeURIComponent(value); 
     url = '/' + $routeParams.time + $location.path(); 
     $location.path(url); 
    } 
+0

https://stackoverflow.com/questions/13636476/angularjs-best-way-to-update-route-parameter –

Respuesta

23

Después de leer los comentarios a mi respuesta, creo que quizás no sea la respuesta correcta para este caso. Por favor, antes de usar esta solución, lea los comentarios y otras respuestas. Ya no uso Angular, así que no me siento capacitado para responder.

dejo la respuesta original sin modificar a continuación:

va a cambiar la ubicación adecuada, pero AngularJS no es darse cuenta de que ha cambiado. Puede resolver el problema con el método '$ aplicar' de su alcance como esto:

$location.path(url); 
$scope.$apply(); 

O así:

$scope.$apply($location.path(url)); 

Ver $ aplicar la documentación aquí http://docs.angularjs.org/api/ng.$rootScope.Scope

+3

Puede experimentar un error $ apply que ya está en progreso, de ser así, consulte: http: // stackoverflow. com/questions/18626039/apply-already-in-progress-error, es fácilmente reparable. – DrCord

+2

No deberías necesitar llamar $ apply a menos que estés interactuando desde un evento no angular. Al utilizar $ aplicar considerar el uso de un enfoque "seguro aplicar": https://coderwall.com/p/ngisma Este no es un caso en el que es necesario utilizar aplicar! – MGot90

+0

solo $ location.path (url) es obligatorio .. –

2

se debe utilizar https://angular-ui.github.io/

ui-router

al usar esto puede hacer ...

state.go ("nombre-ruta", {id: 4});

mucho mejor que el construido en el servicio de enrutamiento

La respuesta más votada es preocupante!

Cuestiones relacionadas