elementui中使用el-tabs切换实时更新数据

目录
  • 使用el-tabs切换实时更新数据
  • el-tabs切换确认
    • 实现效果
    • 相关知识
    • 解决代码
    • 解释

使用el-tabs切换实时更新数据

项目中使用el-tabs 发现会一次性把所有 tab 里的请求读完,之后进行 tab 切换,不再重新读取请求

想要实现切换 tab 能实时更新数据的要求

<el-tabs type="border-card" class="root" v-model="activeName" @tab-click="handleTabClick">
   <el-tab-pane label="menu" name="menu">
     <menu-perm :menus="menus" v-if="tabRefresh.menu" />
   </el-tab-pane>
   <el-tab-pane label="perm" name="perm">
     <api-perm :permissions="permissions" v-if="tabRefresh.perm" />
   </el-tab-pane>
   <el-tab-pane label="data" name="data">
     <span v-if="tabRefresh.data">数据授权</span>
   </el-tab-pane>
 </el-tabs>

js 部分

export default {
  data () {
    return {
      activeName: 'menu',
      tabRefresh: {
        menu: true,
        perm: false,
        data: false
      }
    }
  },
  methods: {
    handleTabClick (tab) {
      this.activeName = tab.name
      switch (this.activeName) {
        case 'menu':
          this.switchTab('menu')
          break
        case 'perm':
          this.switchTab('perm')
          break
        case 'data':
          this.switchTab('data')
          break
      }
    },
    switchTab (tab) {
      for (let key in this.tabRefresh) {
        if (key === tab) {
          this.tabRefresh[key] = true
        } else {
          this.tabRefresh[key] = false
        }
      }
    },
  }
}

通过 v-if 进行选择性渲染,切换 tab 后,将其重新激活,并重新请求后端数据

el-tabs切换确认

实现效果

相关知识

el-tabs具有属性before-leave

解决代码

<template>
    <el-tabs v-model="activeName" :before-leave="leaveTab">
		<el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
    <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
    <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
    <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
    </el-tabs>
</template>
<script>
data(){
    return{
        activeName:"first"
    }
}
methods:{
    leaveTab(){
        let a = confirm('有未保存的更改, 确认离开?')
      if (a) {
        console.log('确认')
        return true
      } else {
        console.log('取消')
        return false
      }
    }
}
</script>

解释

:before-leave是属性,需要绑定一个值。这个值是通过leaveTab传递的

这个问题很简单……但是困扰了有几天……要多看看 官方文档!!!!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 解决vue中el-tab-pane切换的问题

    今天在编写vue的时候用到了el-tabs,然后遇到切换的时候,在次打开el-dialog还是上次的状态(因为两次打开的el-tab-pane数量不一样,就出现了问题) 如下: 第一次打开时的状态,打开到第二次的时候 解决方法 给el-tab-pane命名 <el-tabs type="border-card" v-model="activeName" ></el-tabs> 在script中 data() { return { isShow

  • Vue解决echart在element的tab切换时显示不正确问题

    最近在项目中遇到了这种情况,需要在tab控件上渲染多个echart图标,然后切换查看时,发现图表的宽度不正确 原因:在页面进行加载时,隐藏的图表找不到对应的div大小,所以默认给了一个大小.所以要做的就是在页面加载时,就对图表进行初始化. 网上的解决方案大多都是监听tab的切换事件,然后再根据切换的页面重新渲染echart组件,比较麻烦. 如下是个人的解决方法: 原理:利用v-if属性,当切换至对应的tab时,设置其v-if的值为true即可,同时设置默认显示的tab 举例如下: <el-tab

  • ElementUI中el-tabs事件绑定的具体使用

    tabs组件的属性 tabs的属性 tabs的事件 tab-pane的属性 标签代码 <el-tabs v-model="activeName"> <el-tab-pane name="0" label="标签1"></el-tab-pane> <el-tab-pane name="1" label="标签1"></el-tab-pane> <

  • elementUI的table表格改变数据不更新问题解决

    预期效果:点击输入框旁边的图标,输入框变为可输入状态:这里控制输入的 editable 字段不是 data 原有的属性,也不是 data 赋值时就存在的字段. 问题原因:在 Vue 实例创建时,以及 data 赋值时 editable 并未声明,因此就没有被Vue转换为响应式的属性,自然就不会触发视图的更新. 解决方法: 1.给 data 赋值前把 editable 属性添加到数组里 这里就不贴代码了,大概思路就是:获取到列表信息之后缓存在一个临时数组里(不可以是 data 里面定义好的对象),

  • vue2.* element tabs tab-pane 动态加载组件操作

    一.重要部分 1. 注意 <component :is=item.content></component> :表明模板 <el-tab-pane v-for="(item) in editableTabs" :key="item.name" :label="item.title" :name="item.name" > <component :is=item.content>&l

  • elementui中使用el-tabs切换实时更新数据

    目录 使用el-tabs切换实时更新数据 el-tabs切换确认 实现效果 相关知识 解决代码 解释 使用el-tabs切换实时更新数据 项目中使用el-tabs 发现会一次性把所有 tab 里的请求读完,之后进行 tab 切换,不再重新读取请求 想要实现切换 tab 能实时更新数据的要求 <el-tabs type="border-card" class="root" v-model="activeName" @tab-click=&qu

  • vue3使用vuex实现页面实时更新数据实例教程(setup)

    目录 前言 1.项目引入vue 2.main.js引入vuex 3.新建store文件夹 3.在传输数据的页面引入vuex (api.js) 4.渲染页面 总结 前言 我项目中使用ws获取数据,因为数据是不断更新的,vue页面只更新一次就不更新了,然后暂时只能想到vuex来保存更新状态,页面监听数据实现实时更新.下面是我测试时用的数据,没有用ws,用的是定时器模拟定时发送数据. 1.项目引入vue npm i vuex 2.main.js引入vuex import { createApp } f

  • Ajax实现表格中信息不刷新页面进行更新数据

    本文实例为大家分享了Ajax实现表格中的信息进行更新数据,供大家参考,具体内容如下 html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="jslib/jquery-

  • echarts同一页面中四个图表切换的js数据交互方法示例

    需求: 点击tab页,切换四个不同的图表,ajax向后台请求数据,展示在四个不同的图表中. 其余的就不多说,直接上js代码了 示例代码: $(function() { $("#heart").on("click", function() { $('.heart-car').show(); $('.sleep-car').hide(); $('.breathe-car').hide(); $('.sport-car').hide(); }); $("#bre

  • Layui之table中的radio在切换分页时无法记住选中状态的解决方法

    情景描述 Layui数据表格中用到了表单元素radio,在当前页面选中radio状态,并同步更新到保存表格中所有的数据的数组中(获取表格中的所有数据并保存到数组中),再点击分页组件中的下一页.上一页.跳转按钮进行切换另外一个页面,然后在切换回之前的页面,会发现在以前页面上radio状态全部恢复默认了,我们当然是希望能保存住前一页radio的选中状态. 我写项目遇到的一个的情况:在第一页选中的radio的状态,点击下一页按钮切换到第二页,然后再点击上一页切换会第一页,第一页中的radio状态就恢复

  • 解决vue中虚拟dom,无法实时更新的问题

    碰到的问题:使用jq获取元素节点的个数时一直为0 解决方法:使用vue的nextTick()函数即可解决 原理:nextTick可以在下一次更新dom之后进行回调,我的问题在于,在页面加载完成时无法获取虚拟dom,而使用回调函数后就可以获取到正确的dom数量,所以只需要在nextTick函数中执行jq函数就可以正确获取了. self.$nextTick(function () { // DOM 更新了 $("#myCarousel").carousel(0); }) 以上这篇解决vue

  • elementui中树形表格切换展开不同层级的示例代码

    效果: 代码(复制粘贴即可): <template> <div class="myDiv"> <el-row style="margin:10px 0"> <el-col :span="22"> <el-button type="primary" size="mini" plain @click="expandLevel(0)">

  • Vue filter 过滤当前时间 实现实时更新效果

    过滤器 过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改.判断等,把不符合规则的请求在中途拦截或修改.也可以对响应进行过滤,拦截或修改响应. 下面通过代码给大家介绍Vue filter 过滤当前时间 实现实时更新,具体代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <

  • 用AngularJS的指令实现tabs切换效果

    先来看看效果图 首先先来说一下指令嵌套,指令嵌套顾名思义就是两个以上的指令嵌套在一起,比如下面这样: <A-deirective> <B-directive></B-directive> <C-directive></C-directive> </A-directive> 下面这个tabs功能的指令,刚好用到了这个,可以让代码更加简洁. <!DOCTYPE html> <html lang="en"

随机推荐