解决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 相关文章推荐
Javascript 判断 object 的特定类转载
Feb 01 Javascript
document.compatMode介绍
May 21 Javascript
JS动态调用方法名示例介绍
Dec 18 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
Sep 01 Javascript
js实现照片墙功能实例
Feb 05 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
Aug 12 Javascript
易被忽视的js事件问题总结
May 14 Javascript
JavaScript之cookie技术详解
Nov 18 Javascript
JavaScript实现弹窗效果代码分析
Mar 09 Javascript
微信分享调用jssdk实例
Jun 08 Javascript
vue router学习之动态路由和嵌套路由详解
Sep 21 Javascript
vue.js实现的经典计算器/科学计算器功能示例
Jul 11 Javascript
解决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 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
JavaScript的变量作用域深入理解
2009/10/25 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
用Python的Django框架编写从Google Adsense中获得报表的应用
2015/04/17 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
企业安全生产目标责任书
2014/07/23 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
大二学年个人总结
2015/03/03 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
python 闭包函数详细介绍
2022/04/19 Python