vue如何实现el-menu与el-tabs联动,通过点击el-menu导航中的选项动态添加el-tabs页面
时间: 2023-08-13 18:43:03 浏览: 179
实现el-menu与el-tabs联动的关键在于监听el-menu导航中选项的点击事件,获取到对应的数据后,将el-tabs页面动态添加到页面中。
具体实现步骤如下:
1. 在el-menu组件中绑定@click事件,获取选中的导航项的数据。
```
<el-menu @select="handleSelect">
<el-menu-item :index="1">导航项1</el-menu-item>
<el-menu-item :index="2">导航项2</el-menu-item>
<el-menu-item :index="3">导航项3</el-menu-item>
...
</el-menu>
```
2. 在methods中定义handleSelect方法,获取选中的导航项的数据,并根据数据动态添加el-tabs页面。
```
methods: {
handleSelect(index, indexPath) {
// 获取选中的导航项的数据
const selectedItem = this.menuData[index - 1];
// 动态添加el-tabs页面
this.tabsData.push({
label: selectedItem.label,
name: selectedItem.name
});
}
}
```
3. 在el-tabs组件中使用v-for指令动态渲染选项卡。
```
<el-tabs v-model="activeTab">
<el-tab-pane v-for="tab in tabsData" :key="tab.name" :label="tab.label" :name="tab.name">
...
</el-tab-pane>
</el-tabs>
```
其中,tabsData是一个数组,用来存储动态添加的选项卡的数据。activeTab是v-model绑定的变量,用来控制选中的选项卡。
完整代码如下:
```
<template>
<div>
<el-menu @select="handleSelect">
<el-menu-item :index="1">导航项1</el-menu-item>
<el-menu-item :index="2">导航项2</el-menu-item>
<el-menu-item :index="3">导航项3</el-menu-item>
...
</el-menu>
<el-tabs v-model="activeTab">
<el-tab-pane v-for="tab in tabsData" :key="tab.name" :label="tab.label" :name="tab.name">
...
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
export default {
data() {
return {
menuData: [
{
label: '导航项1',
name: 'tab1'
},
{
label: '导航项2',
name: 'tab2'
},
{
label: '导航项3',
name: 'tab3'
},
...
],
tabsData: [],
activeTab: 'tab1'
}
},
methods: {
handleSelect(index, indexPath) {
// 获取选中的导航项的数据
const selectedItem = this.menuData[index - 1];
// 动态添加el-tabs页面
this.tabsData.push({
label: selectedItem.label,
name: selectedItem.name
});
}
}
}
</script>
```
阅读全文