如何访问Aurelia的儿童路由器?

时间:2015-07-29 22:53:50

标签: router aurelia

我有两个子路由器。我可以从一个导航到另一个。但是从子路由器视图中,我该如何导航?

下面的代码行给出了父路由器实例。

import {Router} from 'aurelia-router'

如何获取子路由器实例?

2 个答案:

答案 0 :(得分:4)

要创建子路由器,请在子路由上创建新路由器,方法与在父路由上创建路由器的方式相同。然后,将路由器设置为视图模型类的属性,以便在整个视图模型中访问它。

import { Router } from 'aurelia-router';

class ChildViewModel() {  
    configureRouter(config, router) {
        this.router = router;
        // router config
    }
    someOtherFunction() {
        this.router.navigate('somewhere');
    }
}

如果你想在另一个视图模型中使用子路由器,你可以导入它并在类上使用路由器(假设该类是一个单独的,除非你另外配置它​​,否则它应该是。)

import { inject } from 'aurelia-framework';
import { ChildViewModel } from './child-view-model';

@inject(ChildViewModel)
class AnotherViewModel() {
    constructor(cvm) {
        this.externalRouter = cvm.router;
    }
    doStuff() {
        this.externalRouter.navigate('somewhere');
    }
    doOtherStuff() {
        ChildViewModel.router.navigate('somewhere else');
    }
}

答案 1 :(得分:0)

我的朋友帮我解决了这个问题。对于第一个路由器导航中的子路由器,我有空白''并使用类似localhost:9000 /的URL。当我尝试从那里导航时,我遇到了问题。所以从第一个导航,我改为代码路由像childrouter / name一样工作。