vant中,van-dropdown-menu-item中open和close事件的順序


目前在做一個使用了vant組件庫的項目,項目中有一塊內容使用了DropDownMenu組件實現一個下拉菜單的效果,當菜單下拉的時候,菜單欄以及其上方搜索欄的背景顏色和字體顏色都會發生改變,關閉時會恢復原狀。

這塊我是使用了兩個css樣式用於區分菜單開始和菜單關閉的狀態,並綁定到相對應dom的class屬性上。然后通過van-dropdown-menu-item的open和close的時間進行class的切換。

故事,就從這里開始了。。。

當我后面自己測試的時候發現,單一個菜單已經打開的時候,再點擊另一個菜單,之前打開的菜單會自動關閉,這本來是一件好事對吧。但這廝從左往右點的時候是正常的,但從從右往左點的時候,在已經有菜單欄開啟的時候,背景變了回去。

why?why?why?

在確認了不是css的問題之后,我分析是open和close事件在執行過程中出現了問題。

分別給open和close加了個console.log()輸出。然后發現從左往右的時候,open和close的順序是:open1->close1->open2;從右往左的時候是:open2->open1->close2

 

 

 

 這就導致,當我們從右向左點擊菜單的時候,最后執行的總會是前一個van-dropdown-menu的close。

至於如何解決的話。。。目前我是給每個菜單都加了個參數,用於表示他們之間的關系,如果open和close事件都是同一個菜單觸發的話,close中改變樣式的事件才會觸發,如果是不一樣的話則不會觸發。

其本質相當於關閉了兩個菜單按鈕切換開啟時的close事件,相當於:從左往右,open1->open2;從右往左,open2->open1。

也不知道會不會出問題,就暫且保留吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM