我有一個問題,我在一個組件中發佈了knockout observable,並且有一個訂閱了這個postbox事件的視圖模型的另一個組件。Knockout Postbox組件之間進行通信 - 如何確保訂閱者處於活動狀態
的發佈事件是內我的「數據表」分量查看模型和如下:
this.pagerParams = ko.observable({ currentPage: this.currentPage, totalItems: this.recordsTotal, itemsPerPage: this.length }).publishOn("pagerParams");
我然後有一個「尋呼機」分量預訂這個郵箱發佈。
ko.postbox.subscribe("pagerParams", (params: PagerParams) => {
this.assignParamValues(params, false);
this.numberOfPages(Math.ceil(this.totalItems()/this.itemsPerPage()) || 1);
this.pageNumbers(this.getPageNumbers());
});
上述郵箱訂閱已在視圖模型構造函數中註冊。根據哪個組件首先變爲活動,我有時會遇到一個問題,即pagerParams訂閱在「數據表」組件視圖模型中發佈,但是尋呼機不承認該事件已發佈。
我發現原因是因爲'pager'組件需要在'data-table'組件之前變爲活動的,否則'pager'視圖模型訂閱只會在該行時檢查任何傳入發佈的代碼已經運行..很多時候,這是在數據表發佈事件之後。
我的問題是,如何確保頁面組件在數據表組件之前變爲活動狀態,以便pub-sub事件系統按照預期在此場景中工作?