mtg - ¿Cómo puedo redireccionar a otro modelo de vista en Aurelia JS?
aurelia nombre (4)
Información breve relacionada: el problema de denominación con "enrutador" es algo que estamos rastreando aquí: https://github.com/aurelia/router/issues/34 Si está leyendo esta respuesta más adelante, y este problema se ha cerrado, entonces debería poder nombrar de manera segura el "enrutador" de su propiedad si así lo desea.
Estoy escribiendo una aplicación usando Aurelia JS . ¿Cómo puedo redireccionar a otra URL? ¿Hay alguna manera de hacerlo sin crear un nuevo paso de canalización de navegación ?
Gracias
Solo pensé en actualizar un poco la excelente respuesta de @Daniel Camarda. A partir de febrero de 2016, puede usar el decorador de inject
de Aurelia. Además, el problema de nomenclatura del router
se ha resuelto.
import {inject} from ''aurelia-framework'';
import {Router} from ''aurelia-router'';
@inject(Router)
export class MyVM {
constructor(router){
this.router = router;
}
someMethod(){
this.router.navigate("myroute");
}
}
para hacerlo, inyecte el enrutador en ViewModel y use el método navigate(route)
Aquí hay un ejemplo:
import {Router} from ''aurelia-router'';
export class MyVM {
static inject() { return [Router]; }
constructor(router){
this.router = router;
}
someMethod(){
this.router.navigate("myroute");
}
}
Tal vez un caso de uso ligeramente diferente, pero publicado ya que es muy similar: al ingresar a una vista, en función de, por ejemplo, parámetros, deseo redireccionar a una vista diferente. Esto debe suceder en activate()
o canActivate()
.
En este caso , tanto navigate () como navigateToRoute () sugeridos anteriormente no funcionan.
Sin embargo, lo que funciona es return new Redirect(''....'')
donde Redirect se importa desde aurelia-router, así:
canActivate(param) {
if (param.id == null)
return new Redirect(''/viewWhichDoesntNeedParam'')
}