我的問題是:當我們在路由器中的視圖之間交換時,是否可以保留路由器視圖的相同視圖模型實例?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