如何重定向到 Aurelia JS 中的另一个视图模型?
How can I redirect to another view-model in Aurelia JS?
我正在使用 Aurelia JS. How can I redirect to another URL? Is there a way to do it without creating a whole new navigation pipeline step 编写应用程序?
谢谢
将路由器注入 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");
}
}
快速相关信息:我们正在跟踪 "router" 的命名问题:https://github.com/aurelia/router/issues/34 如果您稍后阅读此答案,并且此问题已关闭,那么您应该如果您愿意,可以安全地命名您的 属性 "router"。
我只是想稍微更新一下@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");
}
}
也许用例略有不同,但发布是因为它非常相似:进入视图时,基于例如参数,我想重定向到不同的视图。这必须发生在 activate()
或 canActivate()
。
在这种情况下,上面建议的 navigate() 和 navigateToRoute() 都不起作用。
然而,有效的是 return new Redirect('....')
,其中重定向是从 aurelia-router 导入的,如下所示:
canActivate(param) {
if (param.id == null)
return new Redirect('/viewWhichDoesntNeedParam')
}
我正在使用 Aurelia JS. How can I redirect to another URL? Is there a way to do it without creating a whole new navigation pipeline step 编写应用程序?
谢谢
将路由器注入 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");
}
}
快速相关信息:我们正在跟踪 "router" 的命名问题:https://github.com/aurelia/router/issues/34 如果您稍后阅读此答案,并且此问题已关闭,那么您应该如果您愿意,可以安全地命名您的 属性 "router"。
我只是想稍微更新一下@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");
}
}
也许用例略有不同,但发布是因为它非常相似:进入视图时,基于例如参数,我想重定向到不同的视图。这必须发生在 activate()
或 canActivate()
。
在这种情况下,上面建议的 navigate() 和 navigateToRoute() 都不起作用。
然而,有效的是 return new Redirect('....')
,其中重定向是从 aurelia-router 导入的,如下所示:
canActivate(param) {
if (param.id == null)
return new Redirect('/viewWhichDoesntNeedParam')
}