注册监听
initiallize(){
AppCommon.Messenger.on('cellselected', (cell) => { this.viewerControl_CellSelected(cell) });
}
回调函数:
protected viewerControl_CellSelected(cell: MedViewerControlCell) {
this.commandSender.sendCellOperation(null, 'SelectedCellChanged', cell.cellName);
}
触发事件
set isSelected(value) {
if (this._isSelected == value) {
return;
}
this._isSelected = value;
if (value) {
AppCommon.Messenger.trigger('cellselected', this);
}
}
export class Messenger {
private static _callbacks: any = {};
// 实现基本是从\node_modules\abp-web-resources\Abp\Framework\scripts\abp.js 中抽取
static on(eventName: string, callback: (...args: any[]) => void): void {
if (!this._callbacks[eventName]) {
this._callbacks[eventName] = [];
}
this._callbacks[eventName].push(callback);
}
static off(eventName: string, callback: (...args: any[]) => void) : void {
let callbacks = this._callbacks[eventName];
if (!callbacks) {
return;
}
let index = -1;
for (let i = 0; i < callbacks.length; i++) {
if (callbacks[i] === callback) {
index = i;
break;
}
}
if (index < 0) {
return;
}
this._callbacks[eventName].splice(index, 1);
}
static trigger(eventName: string, ...args: any[]): void {
let callbacks = this._callbacks[eventName];
if (!callbacks || !callbacks.length) {
return;
}
for (let i = 0; i < callbacks.length; i++) {
callbacks[i].apply(this, args);
}
}
}
本文探讨了如何在TypeScript中定义和处理事件,重点介绍了回调函数在事件触发时的角色,帮助理解如何在类型安全的环境下进行事件编程。
3509

被折叠的 条评论
为什么被折叠?



