如何重定向到Aurelia JS中的另一个视图模型?
我正在用。如何重定向到另一个URL?有没有一种方法可以做到这一点而不创造一个全新的环境如何重定向到Aurelia JS中的另一个视图模型?,aurelia,Aurelia,我正在用。如何重定向到另一个URL?有没有一种方法可以做到这一点而不创造一个全新的环境 感谢这样做,将路由器插入ViewModel并使用该方法 以下是一个例子: import {Router} from 'aurelia-router'; export class MyVM { static inject() { return [Router]; } constructor(router){ this.router = router; } someMethod()
感谢这样做,将路由器插入ViewModel并使用该方法 以下是一个例子:
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
decorator。此外,路由器
命名问题已得到解决
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()都不起作用
然而,有效的方法是返回新的重定向(“..”)
其中重定向是从aurelia路由器导入的,如下所示:
canActivate(param) {
if (param.id == null)
return new Redirect('/viewWhichDoesntNeedParam')
}
这个.storage是绝对不需要的(从我的一些代码中复制粘贴),我只是在没有散列的情况下测试了它,它似乎可以工作,但是在url中生成了一个稍微不同的散列。。。“/myroute”会在“#/myroute”生成时为您提供,但我认为在开始时不需要“/”,因此我将从代码中删除它:)@DanielCamarda嗨Daniel,调用“router”时引发的异常是错误吗?我也经历了同样的事情,这让我发疯。编辑:刚刚发现了下面Rob的帖子。是的:)刚刚编辑了答案,将@EisenbergEffect引用添加到bug@SunjayVarma“this.storage行可能不应该在那里。”这让人困惑。对我来说,我需要一个这样的机会。使类方法能够访问路由器。@KevinM我删除了该注释。它引用了Daniel随后编辑掉的一些代码。根据您的用例,我相信
canActivate
方法可以返回路由指令对象,如下所示:{redirect:'#/someRoute'}
谢谢。这不在canActivate范围内。为了避免任何人进行检查,@EisenbergEffect于2015年3月关闭了本期。