解决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 相关文章推荐
纯JS实现五子棋游戏兼容各浏览器(附源码)
Apr 24 Javascript
JS图片切换的具体方法(带缩略图版)
Nov 12 Javascript
百度判断手机终端并自动跳转js代码及使用实例
Jun 11 Javascript
js在指定位置增加节点函数insertBefore()用法实例
Jan 12 Javascript
javascript实现复选框选中属性
Mar 25 Javascript
对Angular.js Controller如何进行单元测试
Oct 25 Javascript
原生JS实现在线问卷调查投票特效
Jan 03 Javascript
node.js实现微信JS-API封装接口的示例代码
Sep 06 Javascript
jQuery实现form表单序列化转换为json对象功能示例
May 23 jQuery
vue实现微信分享功能
Nov 28 Javascript
Vue.js中的组件系统
May 30 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
Jul 18 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
桌面中心(四)数据显示
2006/10/09 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
php下拉选项的批量操作的实现代码
2013/10/14 PHP
php中apc缓存使用示例
2013/12/25 PHP
CodeIgniter CLI模式简介
2014/06/17 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
[原创]图片分页查看
2006/08/28 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
js canvas实现俄罗斯方块
2020/10/11 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
基于python时间处理方法(详解)
2017/08/14 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
Django框架反向解析操作详解
2019/11/28 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
python进行参数传递的方法
2020/05/12 Python
网站性能延迟加载图像的五种技巧(小结)
2020/08/13 HTML / CSS
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
2016大一新生军训心得体会
2016/01/11 职场文书
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
Kubernetes控制节点的部署
2022/04/01 Servers