解决vue中el-tab-pane切换的问题


Posted in Javascript onJuly 19, 2020

今天在编写vue的时候用到了el-tabs,然后遇到切换的时候,在次打开el-dialog还是上次的状态(因为两次打开的el-tab-pane数量不一样,就出现了问题)

如下:

解决vue中el-tab-pane切换的问题

第一次打开时的状态,打开到第二次的时候

解决vue中el-tab-pane切换的问题

解决方法

给el-tab-pane命名

<el-tabs type="border-card" v-model="activeName" ></el-tabs>

在script中

data() {
  return {
  isShow: '',
  activeName:'second'
  }
 },

在每次关闭弹框的时候,在关闭方法中重置activeName

activeName='second'

补充知识:vue + element-ui 制作tab切换(切换vue组件,踩坑总结)

项目中用到了一个页面要实现tab切换实现报表展示,自行百度了一下;最后实现效果,在这里把步骤分享给大家!

创建文件:

tabZujian.vue

<template>
  <div class="tabZujian">
    <el-tabs v-model="activeName">
      <el-tab-pane label="tab1" name="first" :key="'first'">
        <child1></child1>
      </el-tab-pane>
  
      <el-tab-pane label="tab2" name="second" :key="'second'">
        <child2></child2>  
      </el-tab-pane>
    </el-tabs>
    
  </div>
</template>
 
<script>
import tabZujianChild1 from '@/tabComponents/tabZujianChild1'
import tabZujianChild2 from '@/tabComponents/tabZujianChild2'
export default {
  name: 'tabZujian',
  components:{
    child1:tabZujianChild1,
    child2:tabZujianChild2
  },
  data() {
    return {
      //默认第一个选项卡
      activeName: "first",
    }
  },
  mounted(){
    
  }
}
</script>

tabZujianChild1.vue

<template>
  <div class="child1">
    我是第一个自组件
  </div>
</template>
<script>
  export default {
   name: 'child1',
   mounted(){
     console.log("tab1组件")
   }
  }
</script>

tabZujianChild2.vue

<template>
  <div class="child2">
    我是第二个子组件
  </div>
</template>
 
<script>
  export default {
   name: 'child1',
   mounted(){
     console.log("tab2组件")
   }
  }
</script>

解决vue中el-tab-pane切换的问题

问题解决:

其实这个问题解决起来非常简单,我们想要的是每次切换tab都能够让对应的tab子组件进行重新渲染。

初始化两个变量 isChildUpdate1:true,isChildUpdate2:false;

使用v-if控制child1和child2是否渲染。

每次切换tab选项的时候,触发事件。让当前点击的tab变量设置位true,让当前组件重新渲染。

这时候当你来回切换的时候,通过v-if判断是否重新渲染当前组件

更改一下tabZujian.vue

<template>
  <div class="tabZujian">
    
    <el-tabs v-model="activeName" @tab-click="handleClick">
      <el-tab-pane label="tab1" name="first" :key="'first'">
        <child1 v-if="isChildUpdate1"></child1>
      </el-tab-pane>
  
      <el-tab-pane label="tab2" name="second" :key="'second'">
        <child2 v-if="isChildUpdate2"></child2>  
      </el-tab-pane>
    </el-tabs>
    
  </div>
</template>
 
<script>
import tabZujianChild1 from '@/tabComponents/tabZujianChild1'
import tabZujianChild2 from '@/tabComponents/tabZujianChild2'
export default {
  name: 'tabZujian',
  components:{
    child1:tabZujianChild1,
    child2:tabZujianChild2
  },
  data() {
    return {
      //默认第一个选项卡
      activeName: "first",
      isChildUpdate1:true,
      isChildUpdate2:false
    }
  },
  mounted(){
    
  },
  methods:{
    handleClick(tab) {
      if(tab.name == "first") {
        this.isChildUpdate1 = true;
        this.isChildUpdate2 = false;
      } else if(tab.name == "second") {
        this.isChildUpdate1 = false;
        this.isChildUpdate2 = true;
      }
    }
  }
}
</script>

最后成功了。

以上这篇解决vue中el-tab-pane切换的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
解析dom中的children对象数组元素firstChild,lastChild的使用
Jul 10 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
Feb 16 Javascript
浅析JS原型继承与类的继承
Apr 07 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
Jun 22 Javascript
JS构造函数与原型prototype的区别介绍
Jul 04 Javascript
jQuery 3.0十大新特性最终版发布
Jul 14 Javascript
ES6 javascript中Class类继承用法实例详解
Oct 30 Javascript
Javascript防止图片拉伸的自适应处理方法
Dec 26 Javascript
vue 中动态绑定class 和 style的方法代码详解
Jun 01 Javascript
关于node-bindings无法在Electron中使用的解决办法
Dec 18 Javascript
PostgreSQL Node.js实现函数计算方法示例
Feb 12 Javascript
Vue3如何理解ref toRef和toRefs的区别
Feb 18 Vue.js
解决echarts图表使用v-show控制图表显示不全的问题
Jul 19 #Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
Jul 19 #Javascript
vue实现的多页面项目如何优化打包的步骤详解
Jul 19 #Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
Jul 19 #Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
Jul 19 #Javascript
完美解决vue 中多个echarts图表自适应的问题
Jul 19 #Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
Jul 19 #Javascript
You might like
PHP使用数组实现队列
2012/02/05 PHP
php基于数组函数实现关联表的编辑操作示例
2017/07/04 PHP
快速保存网页中所有图片的方法
2006/06/23 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
JSON取值前判断
2014/12/23 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
2017/01/24 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
2018/12/13 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
[01:01:14]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第一场 11.21
2020/11/23 DOTA
详细讲解Python中的文件I/O操作
2015/05/24 Python
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
wxPython多个窗口的基本结构
2019/11/19 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
自我鉴定模板
2013/10/29 职场文书
电厂厂长岗位职责
2014/01/02 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
2016年社区服务活动总结
2016/04/06 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
MongoDB数据库的安装步骤
2021/06/18 MongoDB
Python机器学习之决策树和随机森林
2021/07/15 Javascript
MySQL数据库完全卸载的方法
2022/03/03 MySQL
Hive导入csv文件示例
2022/06/25 数据库