我正在使用Aurelia JS编写应用程序。如何重定向到另一个 URL?有没有办法在不创建全新的导航管道步骤的情况下做到这一点?
谢谢
为此,在 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");
}
}
只是想我会稍微更新一下@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");
}
}
快速相关信息:“路由器”的命名问题是我们在此处跟踪的问题:https ://github.com/aurelia/router/issues/34 如果您稍后阅读此答案,并且此问题已关闭,那么如果您愿意,您应该能够安全地将您的财产命名为“路由器”。
也许是一个稍微不同的用例,但由于它非常相似而发布:在输入视图时,基于例如参数,我想重定向到不同的视图。这必须发生在activate()
or中canActivate()
。
在这种情况下,上面建议的 navigate() 和 navigateToRoute() 都不起作用。
但是,有效的return new Redirect('....')
是从 aurelia-router 导入重定向的位置,如下所示:
canActivate(param) {
if (param.id == null)
return new Redirect('/viewWhichDoesntNeedParam')
}