我正在使用Aurelia JS编写应用程序。如何重定向到其他网址?有没有办法在不创建全新navigation pipeline step的情况下完成?
由于
答案 0 :(得分:46)
这样做会在ViewModel中注入路由器并使用方法navigate(route)
这是一个例子:
import {Router} from 'aurelia-router';
export class MyVM {
static inject() { return [Router]; }
constructor(router){
this.router = router;
}
someMethod(){
this.router.navigate("myroute");
}
}
答案 1 :(得分:18)
我想我会更新@Daniel Camarda的优秀答案。自2016年2月起,您可以使用Aurelia的inject
装饰器。此外,router
命名问题已得到解决。
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");
}
}
答案 2 :(得分:17)
快速了解相关信息:我们在此处跟踪“路由器”的命名问题:https://github.com/aurelia/router/issues/34如果您稍后阅读此答案,并且此问题已经关闭,那么您应该能够安全如果您愿意,请将您的媒体资源命名为“路由器”。
答案 3 :(得分:5)
也许是一个稍微不同的用例,但是发布因为它非常相似:在输入视图时,基于例如参数,我想重定向到不同的视图。这必须发生在activate()
或canActivate()
。
在这种情况下,上面建议的navigate()和navigateToRoute()都不起作用。
然而,从{aurelia-router导入Redirect的地方return new Redirect('....')
的工作原理是什么,如下所示:
canActivate(param) {
if (param.id == null)
return new Redirect('/viewWhichDoesntNeedParam')
}