關於element ui的菜單default-active默認選中的問題
element ui的菜單default-active默認選中
代碼如下
<el-menu router :default-active="currentMenu" active-text-color="#7BE4FF" :unique-opened="true"> // 此處navMenu 組件中:index="navMenu.sn" <navMenu :navMenus="menuData"></navMenu> </el-menu>
watch: { '$route' (to, from) { this.getCurrentMenu() } }, methods: { getCurrentMenu () { // 獲取當前頁面 菜單刷新後能自動選中 let currentUrl = window.location.href let currentPage = currentUrl.split('/')[3].replace('#', '') this.currentMenu = currentPage } }
問題如下
切換菜單,中的navMenu.sn===default-active的值一致,選中高亮正常。
但是!!
後退到首頁,菜單樹裡navMenu.sn沒有首頁home這個路由,navMenu.sn!==default-active選中前一個高亮始終不變。
照理說,navMenu.sn!==default-active不應該選中高亮菜單才對。
於是思考
1、確認:index="navMenu.sn"的值和:default-active="currentMenu"的值是一致的
2、確認菜單樹所有的navMenu.sn全部存在且唯一的
3、確認樹生成在前,給default-active賦值再後,可以通過setTimeout延遲改變currentMenu的值,發現若改成存在的菜單,選中高亮正常,若設置為空或不存在的菜單,選中高亮停留在前一個。
4、官方文檔NavMenu導航菜單有一個回調事件,select:菜單激活回調,index: 選中菜單項的 index, indexPath: 選中菜單項的 index path,按照例子的寫法加瞭之後,問題仍然存在。
5、手上兩個系統,同樣的用到瞭element ui的NavMenu導航菜單,一個存在問題一個不存在。
對比代碼發現沒有什麼不同,費解。
最後發現
兩個項目element-ui引用的版本不對
於是乎查看el-menu的源碼(左-v2.4.2;右-v2.4.11)
果然對default-active的處理不一樣……
所以最後解決辦法就是更新引用的element-ui的版本啊……
更新版本
更新至最新版本v2.8.2
1、刪除node_modules下的element-ui文件夾
2、運行命令npm install –save,將默認下載package.json中配置的大版本下的最新版本
若下載的版本不是最新
1、刪除node_modules下的element-ui文件夾
2、找到package-lock.json文件裡"element-ui"配置的那一大段,刪掉,保存文件。
3、運行命令npm install –save,將默認下載最新版本
更新完查看源碼確認
退回至原始版本v2.4.2
運行命令npm install –save [email protected]
PS:
修改package.json文件裡"element-ui"的版本號,改"2.4.11",為 “2.4.2”,再npm install並沒有什麼用處。
因為npm install 將默認下載package.json中配置的大版本下的最新版本,如需鎖定版本,去掉package.json中配置的版本號前面的小尖尖^。
最新說明
當前使用element [email protected]好像沒有文中的問題瞭,貌似官方修復瞭這個bug。
element菜單默認展開和選中
這兩個屬性
- :default-openeds="openeds"
- default-active="/networkConfig"中設置的要與數組中的index保持一致。
openeds也是數組
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- vue.js使用Element-ui中實現導航菜單
- element ui時間日期選擇器el-date-picker報錯Prop being mutated:"placement"解決方式
- Node.js包管理器npm的具體使用
- npm install –save 、–save-dev 、-D、-S 的區別與NODE_ENV的配置方法
- npm install的–save和–save-dev使用說明(推薦)