SAP Spartacus B2B 页面 Disable Confirmation 对话框的显示原理
該按鈕的實現位于 toggle-status.component.html 里,點擊后,可以對當前顯示的 B2B item 進行 activation 和 deactivation 操作。
toggle(item) 方法的實現:
如果當前 item 處于 active 狀態,則當前 toggle 應該執行 deactivation 操作,調用通過構造函數注入的 messageService, 通過 add 方法,添加一個新的 message 對象。
這個對象的 timeout 值為 3000,意思是 3 秒后,confirmation 對話框自動關閉。
this.data$ 是一個 ReplaySubject, 其作用是在給定的時間內,發送所有的已經收到的緩沖區數據,當時間過期后,將銷毀之前已經收到的數據,重新收集即將到來的數據。所以在構造的時候,需要給定兩個值,一個是緩沖區的大小(bufferSize),一個是給定緩沖區存活的窗口時間(windowTime),需要注意的是 ReplaySubject 所使用的緩沖區的策略是 FIFO.
我們使用 ReplaySubject 來實現 3 秒后自動關閉 confirmation 對話框的效果。
這個 data$ 在 message.service.ts 里通過 get 方法被暴露給外界消費者:
對其感興趣的 message.component.ts, 調用 messageService 的 get 方法拿到 ReplaySubject,然后訂閱:
這樣,運行時,message.component.ts 的 render 方法,繪制 confirmation 對話框:
那么對話框如何在 3 秒后自動關閉的?
Confirmation.message.component.ts 的 父類實現是 base-message.component.ts, 在其 ngOnInit 鉤子函數里:
調用原生的 setTimeout, 設置 3 秒后自動關閉的行為。
更多Jerry的原創文章,盡在:“汪子熙”:
 
總結
以上是生活随笔為你收集整理的SAP Spartacus B2B 页面 Disable Confirmation 对话框的显示原理的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 在autocad中怎么去除教育版打印戳记
- 下一篇: linux clk时钟源管理
