vue+iview的菜單與頁簽的聯(lián)動方式
vue+iview菜單與頁簽聯(lián)動
最近在使用vue+iview開發(fā)一個后臺管理類的系統(tǒng),希望做一個點擊左側(cè)菜單右側(cè)的頁簽與內(nèi)容都能相對應的改變。
但搞了好久的路由也沒有實現(xiàn)這個功能。
剛開始使用vue+iview不知道iview-admin可以直接拿來使用,布局之類的開箱即用,可是自己的demo已經(jīng)寫了好久不忍心放棄。
一、使用iview的menu和tab做布局,將這兩個組件放到主頁面
由于menu與tab的數(shù)據(jù)相同且樣式需要進行關(guān)聯(lián),因此可以使用vuex進行狀態(tài)管理,state中寫入需要管理的數(shù)據(jù)和狀態(tài)變量,在mutations中設置操作的動作,actions中監(jiān)聽一些行為(我的菜單沒有展開收縮部分,因此并沒有使用到actions)


二、做好布局之后要對菜單增加點擊事件
on-select,首先在mutations中注冊tab的改變事件,當左側(cè)菜單點擊的時候查看tab中是否已經(jīng)有這個頁簽并設置isExist=false,如果存在,isExist修改為true,沒有的話給tab對應遍歷的數(shù)組增加菜單相對索引的數(shù)據(jù)。
mutationsType中

mutations中:

menu組件中的事件為:

在tab組件中首先設置頁面默認路由:

再將事件加入進去:

iview+Vue多級菜單的聯(lián)動
用最笨的方式寫了一個三級菜單的聯(lián)動

<template>
<div>
<Select v-model="whereMap.model1"
style="width:200px"
@on-change="getSecond">
<Option v-for="item in list1"
:value="item.id"
:key="item.id">{{ item.label }}</Option>
</Select>
<Select v-model="whereMap.model2"
style="width:200px"
@on-change="getThird">
<Option v-for="item in list2"
:value="item.id"
:key="item.id">{{ item.label }}</Option>
</Select>
<Select v-model="whereMap.model3"
style="width:200px">
<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>
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- vue遞歸實現(xiàn)三級菜單
- vue+element使用動態(tài)加載路由方式實現(xiàn)三級菜單頁面顯示的操作
- vue.js實現(xiàn)三級菜單效果
- vue實現(xiàn)后臺管理權(quán)限系統(tǒng)及頂欄三級菜單顯示功能
- Vue iview-admin框架二級菜單改為三級菜單的方法
- Vue實現(xiàn)左右菜單聯(lián)動實現(xiàn)代碼
- vue基于mint-ui實現(xiàn)城市選擇三級聯(lián)動
- 詳解Vue、element-ui、axios實現(xiàn)省市區(qū)三級聯(lián)動
- vue + elementUI實現(xiàn)省市縣三級聯(lián)動的方法示例
- vue實現(xiàn)三級聯(lián)動動態(tài)菜單
相關(guān)文章
VUE數(shù)組根據(jù)索引刪除數(shù)據(jù),頁面同時更新的實現(xiàn)方法
這篇文章主要介紹了VUE數(shù)組根據(jù)索引刪除數(shù)據(jù),頁面同時更新的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
vant的Loading加載動畫組件的使用(通過接口拿數(shù)據(jù)時顯示加載狀態(tài))
這篇文章主要介紹了vant的Loading加載動畫組件的使用,通過接口拿數(shù)據(jù)時顯示加載狀態(tài),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01
Vue路由跳轉(zhuǎn)傳參或打開新頁面跳轉(zhuǎn)的方法總結(jié)
這篇文章主要給大家介紹了關(guān)于Vue路由跳轉(zhuǎn)傳參或打開新頁面跳轉(zhuǎn)的相關(guān)資料,在使用Vue.js開發(fā)單頁面應用時常常會遇到路由跳轉(zhuǎn)傳參的需求,需要的朋友可以參考下2023-07-07

