Ich habe ein Problem, wo ich auf einer Knockout-Observable innerhalb einer Komponente veröffentlichen, und eine andere Komponente mit einem Ansichtsmodell, das dieses Postbox-Ereignis abonniert hat.Knockout Postbox Kommunikation zwischen Komponenten - wie sicherzustellen, Abonnenten ist aktiv
Die Veranstaltung veröffentlichen hab ich in meinem ‚Daten-Tabelle‘ Komponenten-Modell anzeigen und ist wie folgt:
this.pagerParams = ko.observable({ currentPage: this.currentPage, totalItems: this.recordsTotal, itemsPerPage: this.length }).publishOn("pagerParams");
Ich habe dann einen ‚Pager‘ Komponente, die veröffentlichen zu diesem Postbox abonniert.
ko.postbox.subscribe("pagerParams", (params: PagerParams) => {
this.assignParamValues(params, false);
this.numberOfPages(Math.ceil(this.totalItems()/this.itemsPerPage()) || 1);
this.pageNumbers(this.getPageNumbers());
});
Das obige Postbox-Abonnement ist im Ansichtsmodellkonstruktor registriert. Abhängig davon, welche Komponente zuerst aktiv wird, erhalte ich manchmal ein Problem, bei dem das Abonnement von pagerParams im Komponentenansichtsmodell "Datentabelle" veröffentlicht wird, aber der Pager erkennt nicht an, dass das Ereignis überhaupt veröffentlicht wurde.
Ich habe herausgefunden, dass der Grund dafür ist, dass die Komponente 'Pager' vor der Komponente 'datentable' aktiv werden muss, andernfalls prüft die Subskription 'pager' view models nur nach eingehenden Veröffentlichungen, wenn diese Zeile angezeigt wird Code wurde ausgeführt .. und die meiste Zeit, nachdem die Datentabelle das Ereignis veröffentlicht hat.
Meine Frage ist, wie kann ich sicherstellen, dass die Pager-Komponente vor der Datentabelle Komponente aktiv wird, so dass das Pub-Sub-Ereignissystem in diesem wie erwartet in diesem Szenario funktioniert?