解决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 写的一个简单的timer
Jul 30 Javascript
JavaScript Object的extend是一个常用的功能
Dec 02 Javascript
基于JQuery.timer插件实现一个计时器
Apr 25 Javascript
改进版通过Json对象实现深复制的方法
Oct 24 Javascript
JavaScript中的迭代器和生成器详解
Oct 29 Javascript
JSONP之我见
Mar 24 Javascript
javascript控制层显示或隐藏的方法
Jul 22 Javascript
Bootstrap 组件之按钮(二)
May 11 Javascript
Angular 应用技巧总结
Sep 14 Javascript
创建一般js对象的几种方式
Jan 19 Javascript
JavaScript判断对象和数组的两种方法
May 31 Javascript
Vue路由的模块自动化与统一加载实现
Jun 05 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表达式
2006/10/09 PHP
php skymvc 一款轻量、简单的php
2011/06/28 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
php实现的SESSION类
2014/12/02 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
2013/09/29 Javascript
iframe实用操作锦集
2014/04/22 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
详解ES6中的let命令
2020/04/05 Javascript
JavaScript 五大常见函数
2018/03/23 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
python对数组进行反转的方法
2015/05/20 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
如何基于python实现脚本加密
2019/12/28 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
财务人员担保书
2014/05/13 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏
Oracle使用别名的好处
2022/04/19 Oracle
带你了解Java中的ForkJoin
2022/04/28 Java/Android
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js