admin 管理员组

文章数量: 1086019

一 , Element

      <!-- 导航栏 --><div class="TAb"><div class="xiangzuo" @click="leftChange()"><!-- 左箭头 --><i class="el-icon-arrow-left"></i></div><el-tabs class="TAB" v-model="activeIndex" @tab-click="handleClick" scrollable="true" ><el-tab-pane v-for="(item, index) in data" :key="item.id" :label="item.label" :name="index.toString()"><!-- 定义不同的切换列表样式  切换不同样式使用的插槽(没这需求可不写)--><slot :name="item.label" :index="item.id" /></el-tab-pane></el-tabs><div class="xiangyou" @click="rightChange()"><!-- 右箭头 --><i class="el-icon-arrow-right"></i></div></div>//xiangzuo , xiangyou 是左右箭头 定位到tab栏左右两侧
value / v-model绑定值,选中选项卡的 name

定义导航索引值 以及虚拟数据

data(){return(){activeIndex: "0",// 导航列表data: [{id: 0,label: '熊大',name:'one'},{id: 1,label: '熊二',name:'two'},{id:2,label: '光头强',name:'there'},{id: 3,label: '李老板',name:'four'},],}
}

使用左右箭头方法

    methods: {// 导航栏左右箭头切换leftChange() {let num = Number(this.activeIndex)num > 0 && num--this.activeIndex = num.toString()},rightChange() {let num = Number(this.activeIndex)// this.data.length 数组长度num < this.data.length - 1 && num++this.activeIndex = num.toString()},}

到这里就实现左右箭头选中按个切换了

  顺带再拓展一下

二 , tabs标签切换的不同模板样式

需求肯定不会这么简单的 官网给定的模板是切换渲染不同的标题 但在真实场景下每个页面的模板样式肯定不会是一样的 所以我们需要封装组件 以插槽的形式渲染不同的模板样式

//Tabs组件   <!-- 导航栏 --><div class="TAb"><div class="xiangzuo" @click="leftChange()"><!-- 左箭头 --><i class="el-icon-arrow-left"></i></div><el-tabs class="TAB" v-model="activeIndex" @tab-click="handleClick"                                         scrollable="true" >//data 父组件传递过来的数据<el-tab-pane v-for="(item, index) in data" :key="item.id" :label="item.label" :name="index.toString()"><!-- 定义不同的切换列表样式 --><slot :name="item.label" :index="item.id" /></el-tab-pane></el-tabs><div class="xiangyou" @click="rightChange()"><!-- 右箭头 --><i class="el-icon-arrow-right"></i></div></div>//props 接收props: {data: {type: Array,default: () => [],},defaultActiveTab: {type: String,default: ""}},data() {return {activeIndex: "0",};}, //methods 切换方法methods: {// 导航栏左右箭头切换leftChange() {let num = Number(this.activeIndex)num > 0 && num--this.activeIndex = num.toString()},rightChange() {let num = Number(this.activeIndex)num < this.data.length - 1 && num++this.activeIndex = num.toString()},// 切换tab栏方法handleClick(tab) {this.activeIndex = tab.name},},

2.在父组件中引用并定义具名插槽名字 

// 引入tab组件
import Tabs from './components/Tabs.vue';
 <Tabs :data="activeList" :defaultActiveTab="'tab1'" class="tabs">//#绑定的具名插槽的名字<template #地名信息><div class="info"><div  v-for="item in  listTitle" :key="item.id"><div class="text-container"><span class="first">{{ item.title }}:  </span> <span class="text">这里是文本内容,当文本内容过长时会自动换行,而不会 影响到布局。</span></div></div></div></template><template #配置管理><div class="tab-content-2">标签页2的内容</div></template><template #商品管理><div class="tab-content-3">标签页3的内容</div></template><template #库存管理><div class="tab-content-3">标签页4的内容</div></template>
</Tabs>

//贴上数据格式

             // 导航列表activeList: [{id: 0,label: '地名信息',name: 'one'},{id: 1,label: '配置管理',name: 'two'},{id: 2,label: '商品管理',name: 'there'},{id: 3,label: '库存管理',name: 'four'},],

//附上效果图

续写: 可能测试的时候也是稍微有点问题 大家可以参考我最新补充的

最新修改的

本文标签: element