解决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 判断字符串是否为数字的简单方法
Jul 25 Javascript
javascript利用初始化数据装配模版的实现代码
Nov 17 Javascript
JS Replace()的高级使用方法介绍
Jun 29 Javascript
JavaScript获取onclick、onchange等事件值的代码
Jul 22 Javascript
详解AngularJS中的表格使用
Jun 16 Javascript
BootStrap文件上传样式超好看【持续更新】
May 10 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
js编写三级联动简单案例
Dec 21 Javascript
微信小程序 欢迎页面的制作(源码下载)
Jan 09 Javascript
Angularjs上传文件组件flowjs功能
Aug 07 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
Nov 13 Javascript
JS面向对象编程实现的Tab选项卡案例详解
Mar 03 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安全技术之 实现php基本安全
2010/09/04 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
ExpressJS入门实例
2015/01/14 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
vue根据值给予不同class的实例
2018/09/29 Javascript
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
python实现12306火车票查询器
2017/04/20 Python
Python中pillow知识点学习
2018/04/30 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
Pycharm生成可执行文件.exe的实现方法
2020/06/02 Python
如何利用python发送邮件
2020/09/26 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
创先争优活动方案
2014/02/12 职场文书
合作意向书范本
2014/03/31 职场文书
开票证明
2015/06/23 职场文书
redis实现共同好友的思路详解
2021/05/26 Redis
Python实现为PDF去除水印的示例代码
2022/04/03 Python