diff --git a/packages/core/src/App.ts b/packages/core/src/App.ts index 53d46d11..c1bf7038 100644 --- a/packages/core/src/App.ts +++ b/packages/core/src/App.ts @@ -167,8 +167,13 @@ class App extends EventEmitter { this.setPage(pageId); if (this.dataSourceManager) { - const dataSourceList = Array.from(this.dataSourceManager.dataSourceMap.values()); - this.eventHelper?.bindDataSourceEvents(dataSourceList); + if (this.dataSourceManager.isAllDataSourceRegistered()) { + this.eventHelper?.bindDataSourceEvents(); + } else { + this.dataSourceManager.once('registered-all', () => { + this.eventHelper?.bindDataSourceEvents(); + }); + } } } diff --git a/packages/core/src/EventHelper.ts b/packages/core/src/EventHelper.ts index 9697b5f7..5940a391 100644 --- a/packages/core/src/EventHelper.ts +++ b/packages/core/src/EventHelper.ts @@ -121,7 +121,9 @@ export default class EventHelper extends EventEmitter { this.nodeEventList.clear(); } - public bindDataSourceEvents(dataSourceList: DataSource[]) { + public bindDataSourceEvents() { + const dataSourceList = Array.from(this.app.dataSourceManager?.dataSourceMap.values() || []); + this.removeDataSourceEvents(dataSourceList); dataSourceList.forEach((dataSource) => {