首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Aurelia EventAggregator不订阅

Aurelia EventAggregator不订阅
EN

Stack Overflow用户
提问于 2016-10-14 22:15:46
回答 1查看 694关注 0票数 1

我的Aurelia应用程序中有一个父-子组件体系结构。Panel是一个父组件视图模型,其中有一个Tool组件.

我在Panel上有一个分页UI,点击Tool应该更新的内容。问题是,跟踪单击哪个页码的变量,pageNumber仅在panel.ts中可用,而在tool.ts中不可用。因此,基本上,这是两个ViewModels之间的通信问题。

为了解决这个问题,我正在使用Aurelia的EventAggregator,下面是的优秀教程。以下是我到现在为止所写的:

panel.html

代码语言:javascript
复制
<a class="page-link" click.delegate="pageClick(1)"> 1 </a>

panel.ts

代码语言:javascript
复制
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);
}

tool.ts

代码语言:javascript
复制
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实例是不同的,但我不确定它是否需要相同。任何帮助都是非常感谢的。另外,如果您知道实现intercomponent communication的其他更好的方法,请告诉我如何实现。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-14 23:37:51

您需要在将被调用的函数中设置订阅。也许添加一个attached回调并在那里设置订阅。确保释放订阅,可能是在detached回调中。我现在在手机上,但是如果你需要一个代码示例,让我知道,当我回到家的时候我会添加一个。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40052752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档