我的问题是:当我们在路由器中的视图之间交换时,是否可以保留路由器视图的相同视图模型实例?Aurelia路由 - 防止视图交换每次实例化新的视图模型
我解释我的问题:我想使路由器子组件通信感谢EventAggregator
。我的一个路由器子组件发布消息,点击一个按钮,另一个订阅它。
这里是订阅了该事件的组件的代码:
constructor(private ea: EventAggregator) {
ea.subscribe(GameInfo, msg => console.log(msg));
}
当我点击我的按钮,我在控制台多个日志(或无)看到这取决于时间,我驾驶的数我认为是订阅。
这里是我的路由器组件:
import {Router, RouterConfiguration} from 'aurelia-router';
export class Playground {
public router: Router;
public configureRouter(config: RouterConfiguration, router: Router) {
config.map([
{ route: ['', 'media-creator'], name: 'media-creator', moduleId: './media-creator/media-creator', nav: true, title: 'Media Creator' },
{ route: 'board-initializer', name: 'board-initializer', moduleId: './board-initializer/board-initializer', nav: true, title: 'Board Initializer' },
{ route: 'code-editor', name: 'code-editor', moduleId: './code-editor/code-editor', nav: true, title: 'Code Editor' }
]);
this.router = router;
}
}
我想从董事会初始化程序的代码编辑器发送信息,我需要保持各个组件的状态,当我浏览通过路由器。
也许这是不可能的,以防止这种机制和我的解决办法是使用一个自举导航的选项卡/数据切换。
谢谢您对任何给定的见解。
所以这里的实际问题是,您从同一视图模型获得多个事件侦听器? – Tom
@thebluefox我认为问题在于,我每次导航到我的视图时都会调用构造函数,并且我多次订阅相同的事件。另一个原因是我想在导航时保持模型视图处于相同的状态(至少是BoardInitializer组件),所以用户不会失去他在该视图中所做的。 – SimonC
嗨@SimonC,有bluefox回答你的问题?如果没有,我很乐意进一步帮助,只是让我们知道你需要澄清。如果您的问题得到解答,请标记接受的答案。谢谢! – thinkOfaNumber