我有一個基於Aurelia的單頁應用程序,我試圖讓它與現有的SignalR後端一起工作。我已經下載了SignalR javascript客戶端並手動將其與Aurelia應用程序集成(即,我沒有使用代理文件)。我能夠連接到SignalR集線器並查看控制檯中的活動消息....迄今爲止非常好。現在,我正嘗試使用Aurelia Event Aggregator,以便在新的中心消息到達時觸發事件,並且該應用程序的任何組件都訂閱了該特定事件將會執行一些工作。問題在於SignalR事件回調似乎無法訪問Event Aggregator對象。下面的代碼來說明問題:在回調函數中引用無法獲取與Aurelia Event Aggregator一起發佈的SignalR客戶端事件
//Import statements omitted for brevity
@inject (EventAggregator)
export class MyService{
constructor(eventAggregator) {
this.ea = eventAggregator;
this.connection = $.hubConnection("http://localhost:8080/signalr", { useDefaultPath: false });
this.hub = this.connection.createHubProxy("myHub");
//Register a callback function to fire when a new hub message arrives
this.hub.on("sendMessage", this.processHubMessage);
//No issues so far - all this constructor code works fine
}
processHubMessage(message) {
// This doesn't work - this.ea is undefined in the scope of this function
this.ea.publish('deviceStatusUpdate', message);
}
}
事件聚合對象是沒有定義 - 我假設,因爲它沒有被類的範圍內調用。有沒有辦法解決這個問題?我如何給回調函數訪問類屬性(在本例中爲this.ea)。
感謝您的幫助...這完美! – CharlieB