如何在Aurelia JS中重定向到另一个视图模型?

时间:2015-03-02 03:26:44

标签: aurelia

我正在使用Aurelia JS编写应用程序。如何重定向到其他网址?有没有办法在不创建全新navigation pipeline step的情况下完成?

由于

4 个答案:

答案 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')
}