本篇內容介紹了“vue+iview的菜單與頁簽怎么聯動”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
最近在使用vue+iview開發一個后臺管理類的系統,希望做一個點擊左側菜單右側的頁簽與內容都能相對應的改變。
但搞了好久的路由也沒有實現這個功能。
剛開始使用vue+iview不知道iview-admin可以直接拿來使用,布局之類的開箱即用,可是自己的demo已經寫了好久不忍心放棄。
由于menu與tab的數據相同且樣式需要進行關聯,因此可以使用vuex進行狀態管理,state中寫入需要管理的數據和狀態變量,在mutations中設置操作的動作,actions中監聽一些行為(我的菜單沒有展開收縮部分,因此并沒有使用到actions)
on-select,首先在mutations中注冊tab的改變事件,當左側菜單點擊的時候查看tab中是否已經有這個頁簽并設置isExist=false,如果存在,isExist修改為true,沒有的話給tab對應遍歷的數組增加菜單相對索引的數據。
mutationsType中
mutations中:
menu組件中的事件為:
在tab組件中首先設置頁面默認路由:
再將事件加入進去:
用最笨的方式寫了一個三級菜單的聯動
<template> <div> <Select v-model="whereMap.model1" @on-change="getSecond"> <Option v-for="item in list1" :value="item.id" :key="item.id">{{ item.label }}</Option> </Select> <Select v-model="whereMap.model2" @on-change="getThird"> <Option v-for="item in list2" :value="item.id" :key="item.id">{{ item.label }}</Option> </Select> <Select v-model="whereMap.model3" > <Option v-for="item in list3" :value="item.id" :key="item.id">{{ item.label }}</Option> </Select> <Button class="search-btn" type="default" @click="searchClear">清空</Button></div> </template> <script> export default { data () { return { datatest: { l1: [ { id: 'cat', label: '貓' }, { id: 'dog', label: '狗' } ], l2: { cat: [{ id: 'sc', label: '小貓' }, { id: 'bc', label: '大貓' }], dog: [{ id: 'sd', label: '小狗' }, { id: 'bd', label: '大狗' }] }, l3: { sc: [{ id: 'sc1', label: '小花貓' }, { id: 'sc2', label: '小橘貓' }], bc: [{ id: 'bc1', label: '大花貓' }, { id: 'bc2', label: '大橘貓' }] } }, list1: [], list2: [], list3: [], whereMap: { model1: '', model2: '', model3: '' } } }, mounted () { this.init() }, created () { this.init() }, methods: { init () { this.list1 = this.datatest.l1 }, getSecond (val) { this.list2 = this.datatest.l2[val] }, getThird (val) { this.list3 = this.datatest.l3[val] }, searchClear () { console.log(this.whereMap) this.whereMap = {}; this.list2 = []; this.list3 = []; } } } </script>
“vue+iview的菜單與頁簽怎么聯動”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。