解决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 相关文章推荐
jQuery手动点击实现图片轮播特效
Apr 20 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
May 15 Javascript
javaScript中定义类或对象的五种方式总结
Dec 04 Javascript
原生js实现手风琴功能(支持横纵向调用)
Jan 13 Javascript
JavaScript实现前端分页控件
Apr 19 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
Jan 02 Javascript
vue项目打包之后背景样式丢失的解决方案
Jan 17 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
May 30 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
Jun 03 Javascript
小程序实现左滑删除效果
Jul 25 Javascript
解决Vue router-link绑定事件不生效的问题
Jul 22 Javascript
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 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函数解决SQL injection
2006/10/09 PHP
php 图片上传类代码
2009/07/17 PHP
php中调用其他系统http接口的方法说明
2014/02/28 PHP
纯php生成随机密码
2015/10/30 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
学习Angular中作用域需要注意的坑
2016/08/17 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
Python中atexit模块的基本使用示例
2015/07/08 Python
Python中常用信号signal类型实例
2018/01/25 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
详解如何设置Python环境变量?
2019/05/13 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
python已协程方式处理任务实现过程
2019/12/27 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
如何用python免费看美剧
2020/08/11 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
大学生思想汇报范文
2013/12/31 职场文书
银行求职信
2014/05/31 职场文书
基层党员对照检查材料
2014/09/24 职场文书
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python
Python基础之变量的相关知识总结
2021/06/23 Python
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android