我有两个子路由器。我可以从一个导航到另一个。但是从子路由器视图中,如何导航?
以下代码行给出了父路由器实例。
import {Router} from 'aurelia-router'
如何获取子路由器实例?
注:子路由器实例需要在应用程序代码中定义并声明。
要创建子路由器,可以在与父级路由器相同的方式下,在子路由上创建一个新的路由器。然后,将路由器设置为视图模型类的属性,以便您可以在整个视图模型中访问它。
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');
}
}
我的朋友帮我解决了这个问题。在第一个路由器导航的子路由器上,我留空了'',它采用了像localhost:9000/这样的URL。当我试图从那里导航时,我遇到了问题。所以从第一次导航开始,我改变了代码,像childrouter/name这样路由,然后它就可以工作了。
import {Router} from 'aurelia-router';
然后将其注入到类中,并像这样使用它this.router.navigate('child2')
。与正常的路由相比,这里没有什么不同。 - dfsq