当前位置:   article > 正文

Element ui tabs组件左右箭头切换 (第一项为固定项)_el-tab-pane 左右

el-tab-pane 左右

之前发布过一篇关于切换的 但是有点瑕疵 这次补充一下

  1. <template>
  2. <div style="margin: 10px 10px; border: 1px solid rgb(212, 209, 209); border-radius: 10px; overflow: hidden; box-shadow: 0px 0px 12px -6px;">
  3. <!-- 导航栏 -->
  4. <div class="TAb">
  5. //这个v-if是渲染的条数少于几条的话左右箭头不展示 没有需求可不加
  6. <div class="xiangzuo" @click="leftChange()" v-if="changePage">
  7. <!-- 左箭头 -->
  8. <i class="el-icon-arrow-left"></i>
  9. </div>
  10. <el-tabs class="TAB" v-model="activeIndex" @tab-click="handleClick" scrollable="true">
  11. <!-- 固定项 -->
  12. <el-tab-pane v-if="showFixedTab" label="地名信息" name="fixed">
  13. <!-- 固定项内容 -->
  14. <!-- //在这加了一个判断 如果渲染的数据没有值的话就不展示这一行 -->
  15. <div class="text-container" v-if="item.valueName != '' && item.valueName != null " v-for="(item,index) in infoData" :key="index">
  16. <span class="first">{{ index}}: </span> <span class="text">{{ item.valueName }}</span>
  17. </div>
  18. <!-- ... -->
  19. </el-tab-pane>
  20. <!-- 其他项 -->
  21. <el-tab-pane v-for="(item, index) in tabsList" :key="index" :label="item.label" :name="index.toString()" style="padding: 0px 10px;">
  22. <!-- 定义不同的切换列表样式 -->
  23. <span v-html="item.name"></span>
  24. <!-- <slot :name="item.key" :index="index" /> -->
  25. </el-tab-pane>
  26. </el-tabs>
  27. <div class="xiangyou" @click="rightChange()" v-if="changePage">
  28. <!-- 右箭头 -->
  29. <i class="el-icon-arrow-right"></i>
  30. </div>
  31. </div>

data里没啥可看的 就是要渲染的数据定义

  1. data() {
  2. return {
  3. //默认选中的项
  4. activeIndex: "",
  5. tabsList: [],
  6. // 测试数据
  7. // testMock: [
  8. // {label:'暂无数据',name:'暂无数据'},
  9. // {label:'暂无数据',name:'暂无数据'},
  10. // {label:'暂无数据',name:'暂无数据'},
  11. // ],
  12. // activeTab: this.defaultActiveTab
  13. // 切换页显示与隐藏
  14. changePage: true,
  15. showFixedTab:true
  16. };
  17. },

在生命周期里刚开始的时候判断了一下 看是否添加固定项 因为我这个是组件

  1. created() {
  2. this.activeIndex = this.showFixedTab ? 'fixed' : '0';
  3. },

这个是判断条数低于几条的时候不展示左右箭头 有需求的话看是开局就添加还是监测到数据了在触发方法都一样

  1. if (this.tabsList != null && this.tabsList.length < 3) {
  2. this.changePage = false
  3. } else if (this.tabsList != null && this.tabsList.length > 3) {
  4. this.changePage = true
  5. } else {
  6. this.changePage = false
  7. }

最后就是方法

  1. leftChange() {
  2. const currentIndex = parseInt(this.activeIndex);
  3. if (currentIndex > 0) {
  4. this.activeIndex = (currentIndex - 1).toString();
  5. } else if (currentIndex === 0 && this.showFixedTab) {
  6. this.activeIndex = 'fixed';
  7. }
  8. },
  9. rightChange() {
  10. //因为我是将他的下标当默认选中的数据为依据的所以转化为数值型
  11. const currentIndex = parseInt(this.activeIndex);
  12. const lastIndex = this.tabsList.length - 1;
  13. if (currentIndex < lastIndex) {
  14. this.activeIndex = (currentIndex + 1).toString();
  15. //如果选中的数据为最大值了 切换到fixed项
  16. } else if (currentIndex === lastIndex && this.showFixedTab) {
  17. this.activeIndex = 'fixed';
  18. //如果为fixed项就切换到数据的0
  19. } else if (this.activeIndex == 'fixed') {
  20. this.activeIndex = '0';
  21. }
  22. },
  23. handleClick(tab) {
  24. if (tab.name !== 'fixed') {
  25. this.activeIndex = tab.name;
  26. }

兄弟们看需求改改吧

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/581692
推荐阅读
相关标签
  

闽ICP备14008679号