Aurelia事件聚合器未订阅

Aurelia事件聚合器未订阅,aurelia,Aurelia,我的Aurelia应用程序中有一个父子组件体系结构面板是一个父组件视图模型,其中有一个工具组件 我在面板上有一个分页用户界面,单击该界面,工具应该更新。问题是,跟踪单击了哪个页码的变量,pageNumber仅在panel.ts中可用,而在tool.ts中不可用。因此,基本上,这是两个ViewModel之间的通信问题 为了解决这个问题,我使用了Aurelia的EventAggregator,方法是遵循优秀的教程。以下是我迄今为止所写的: panel.html <a class="page-l

我的Aurelia应用程序中有一个父子组件体系结构<代码>面板是一个父组件视图模型,其中有一个
工具
组件

我在
面板
上有一个分页用户界面,单击该界面,
工具
应该更新。问题是,跟踪单击了哪个页码的变量,
pageNumber
仅在
panel.ts
中可用,而在
tool.ts
中不可用。因此,基本上,这是两个ViewModel之间的通信问题

为了解决这个问题,我使用了Aurelia的
EventAggregator
,方法是遵循优秀的教程。以下是我迄今为止所写的:

panel.html

<a class="page-link" click.delegate="pageClick(1)"> 1 </a>
tool.ts

import {inject} from 'aurelia-framework';
import {EventAggregator} from 'aurelia-event-aggregator';

@inject(EventAggregator)
export class Panel {

eventAggregator: EventAggregator;

constructor(eventAggregator) {
    this.eventAggregator = eventAggregator;
}

pageClick(pageNumber) {
    var pageInfo = {
        pageNumber: pageNumber
    }
    this.eventAggregator.publish("pageClicked", pageInfo);
}
import {inject} from 'aurelia-framework';
import {EventAggregator} from 'aurelia-event-aggregator';

@inject(EventAggregator)
export class Tool {

eventAggregator: EventAggregator;

constructor(eventAggregator) {
    this.eventAggregator = eventAggregator;
}

pageClicked() {
    this.eventAggregator.subscribe("pageClicked",
        pageInfo => {
            console.log(`${pageInfo.pageNumber} was clicked`);
        });
}
在触发事件之前,此操作可以正常工作。我试着调试,发现
eventAggregator
触发了
pageClicked
事件。但是
subscribe
上的断点从未命中。不知何故,
subscribe
方法没有被触发。我错过了什么


我最初的想法是,
EventAggregator
实例是不同的,但我不确定它是否需要相同。感谢您的帮助。另外,如果您知道其他更好的方式来实现
内部通信
,请告诉我如何实现。谢谢

您需要在将被调用的函数中设置订阅。可能会添加一个
附加的
回调并在那里设置订阅。请确保处置订阅,可能是在
分离的
回调中。我现在正在使用手机,但如果您需要一个代码示例,请告诉我,我回家后会添加一个。

非常感谢您。我完全忘记了从未调用过
pageClicked()
,并且根本没有设置
subscription
。没问题。每个人都会遇到这种情况。顺便问一下,
EventAggregator
是实现我在这里尝试的目标的首选方法吗?或者不同组件之间是否有其他通信方式?根据我掌握的信息,是的。您还可以查看自定义事件。好的,我会的。非常感谢。