element中树形数据与懒加载实现全部展开和全部收起

element中属性懒加载数据

default-expand-all属性::是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效

如果在表格头上加上一个按钮实现全部展开与收起 类似如图这种  默认是【全部展开】按钮,点击后,树状列表下所有数据为展示,按钮变为【全部收起】;点击【全部收起】时,树状列表下所有数据为收起状态,即返回默认状

如果动态设置控制default-expand-all树状图是不发生变化的 也就是不起作用。

解决方法:上代码:

<template>
    <div class="app-container">
      <el-form :inline="true" label-width="90px">
        <el-form-item>
          <el-button v-if="open" type="primary" style="margin-bottom:10px;" @click="Toexpandall">全部展开</el-button>
          <el-button v-if="close" type="primary" style="margin-bottom:10px;" @click="ToClose">全部收起</el-button>
        </el-form-item>
      </el-form>
      <el-table
        v-loading="loading"
        row-key="svrId"
        ref="tabletree"
        :data="treeList"
        :default-expand-all="false"
        :tree-props="{children: ‘children‘, hasChildren: ‘hasChildren‘}">
        <el-table-column prop="svrName" label="姓名"></el-table-column>
        <el-table-column prop="svrTypeName" label="服务商类型" align="center" ></el-table-column>
        <el-table-column prop="svrMobile" label="手机号" align="center" ></el-table-column>
        <el-table-column prop="svrId" label="账号" align="center" ></el-table-column>
        <el-table-column prop="businessLevelName" label="等级" align="center" ></el-table-column>
      </el-table>
    </div>
</template>

<script>
import { treelist } from "@/api/svrmanage/apply"
export default {
  name: "treeList",
  data() {
    return {
      // 遮罩层
      loading: true,
      // 表格树数据
      treeList: [],
      open: true,
      close:false,
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** 查询部门列表 在这里调后端接口进行数据渲染 */
    getList() {
      this.loading = true;
      treelist().then(response => {
        if(response.code === 200) {
          this.treeList = response.data;
          this.loading = false;
        }
      });
    },
    // 全部展开
    Toexpandall() {
      let els = document.getElementsByClassName(‘el-table__expand-icon‘)
      if(this.treeList.length !=0 && els.length != 0){
        this.open = false
        this.close = true
        for(let j1=0;j1<els.length;j1++){
          els[j1].classList.add("dafult")
        }
        if(this.$el.getElementsByClassName(‘el-table__expand-icon--expanded‘)){
          const open = this.$el.getElementsByClassName(‘el-table__expand-icon--expanded‘)
          for(let j=0;j<open.length;j++){
            open[j].classList.remove("dafult")
            // open[j].classList.remove("el-table__expand-icon--expanded")
            // open[j].click(function(event) {
            //   event.preventDefault();
            // })
          }
          const dafult = this.$el.getElementsByClassName(‘dafult‘)
          for(let a=0;a<dafult.length;a++){
            dafult[a].click()
          }
        }
      }
    },
    // 全部收起
    ToClose() {
      if(this.treeList.length !=0){
        this.open = true
        this.close = false
        const elsopen = this.$el.getElementsByClassName(‘el-table__expand-icon--expanded‘)
        if(this.$el.getElementsByClassName(‘el-table__expand-icon--expanded‘)){
          for(let i=0;i<elsopen.length;i++){
            elsopen[i].click()
          }
        }
      }
    }
  }
};
</script>

这样写也会解决全部展开与收起时引起反向展开与收起的bug。

总结:

  1.树形图全部展开的时候会有一个类名  el-table__expand-icon--expanded

  2。先获取所有的数据包括节点。添加一个类名 (dafult)注意类名随便起。

  3。判断:如果不存在el-table__expand-icon--expanded就移除刚才添加的类名dafult)。进而是实现点击事件

  4.点击全部收起按钮的时候只要存在类名el-table__expand-icon--expanded就实现点击事件

如果不对之处或改善的地方欢迎指出。

原文地址:https://www.cnblogs.com/toughy/p/12667805.html

时间: 2024-07-31 08:54:26

element中树形数据与懒加载实现全部展开和全部收起的相关文章

四十二:数据库之SQLAlchemy之数据查询懒加载技术

懒加载在一对多,或者多对多的时候,如果要获取多的这一部分的数据的时候,通过一个relationship定义好对应关系就可以全部获取,此时获取到的数据是list,但是有时候不想获取全部数据,如果要进行数据筛选就需要遍历筛选,就比较麻烦,可以从查询返回值里面入手,比如在获取到的数据里面还要加个过滤条件,则需要在relationship中加一个参数:lazy='dynamic',以后通过relationship定义的对应关系获取到的就不是一个列表,而是一个AppenderQuery对象,这种对象既可以

如何在在WinFrom的DataGridView中做到数据持续动态加载而不卡死

1.在这个过程我用过好几种办法 (1)使用委托的办法,这个方法可以做到持续加载,但是效果不理想会卡死 (2)开启线程的方法,会造成卡死 (3)使用另一个窗体的线程做持续加载(子窗体),让子窗体作为一个中间件去通知dataGridView绑定数据,子窗体隐藏.从而可以使主窗体不用卡死 ,给用户造成一中假状态,卡死的是子窗体而已,并且做了隐藏. 2.截图如下 (3)代码如下 <1>借助了两个类:ComAsyncExecute.cs  TSwitch.cs <2>具体代码内容如下: Co

smartjs - DataManager 场景示例分析 - 数据懒加载

发一张policy的参数图设置图: 场景1 - 数据的懒加载/延迟加载 在很多时候,为了提高网页的加载速度,减少不必要的开销,会将页面的数据拆分成几个部分,首先加载呈现可视区域内的数据,然后剩下来的会在需要的时候在进行加载. 而这种按需加载的数据又分为两种: 1.按照需要进行加载:可以是由某个动作触发来引起,比如:tab,查看更多等: 2.采用缓存的方式:对后续动作的预知,提前将后续的数据加载进来,放入到缓存中:等需要的时候能提供快速的响应:比如:很多igrid的滚动分页 那么来看一下在data

EF中的贪婪加载和延迟加载(懒加载)

在上一章中,我们使用了Linq对Entity Framework进行了一个查询,但是通过学习我们却发现了懒加载给我来的性能上的开销是很到的,尤其是在循环中,如果数据量不是很多的情况下还可以接受,如果数据量一旦大气来,那么这个效率则是影响非常大的.那该怎么办呢?其实在Entity Framwork中,除了提供了懒加载技术还提供了一个“贪婪加载”.那么什么是贪婪加载呢?从名字上看,就是非常的粗鲁的,一次性的吧相关的数据全部查询出来,虽然在性能上说还是有点影响的,但是比起在循环中使用懒加载要强了不少了

iOS中的懒加载

iOS开发中 我们经常使用懒加载 1.懒加载的好处,让控件和对象在最需要加载的时候加载.这样可以节省内存空间,因为我们移动的设备资源还是比较宝贵的.所谓懒加载 就是推迟他的getter方法的执行. 比如.一个view的子控件 ,只有当这个view被显示的时候才去加载.一个tableViewCell中,给他设置了图片,他的content View里面才包含imageView的图片,只有设置了textLabel的内容,才会加载这个textLabel. //collectionView的数据源--属性

mybatis(三)懒加载

懒加载的好处: 所谓懒加载(lazy)就是延时加载,延迟加载.什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载.至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,我们让数据在需要的时候才进行加载,这时我们就用到了懒加载.总结为: 1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强,层次感很强. 2> 每个属性的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强

边练边学--plist文件,懒加载,模型初使用--补充instancetype

一.什么是plist文件 1>将数据直接写在代码里面,不是一种合理的做法.如果数据经常修改,就要经常翻开对应的代码进行修改,造成代码扩展性低 2>因此,可以考虑将经常变得数据放在文件中进行存储,程序启动后从文件中读取最新的数据.如果要变动数据,直接修改数据文件即可,不用修改代码 3>一般可以使用属性列表文件存储NSArray或者NSDictionary之类的数据,这种“属性列表文件”的扩展名是plist,因此也成为“plist文件” 二.创建plist文件 三.解析plist文件 代码实

hibernate懒加载

16.懒加载 性能: 发出的sql语句越少,性能越高 方法: 1.懒加载 2.抓取策略 3.缓存策略 4.HQL语句   懒加载 1.类的懒加载 1.利用session.load方法可以产生代理对象 2.在session.load方法执行的时候并不发出sql语句 3.在得到其一般属性的时候发出sql语句 4.只针对一般属性有效,针对标示符属性是无效的 5.默认情况就是懒加载  2.集合的懒加载 <set name=""  lazy="" cascasd=&qu

懒加载 字典转模型 自定义cell

1 懒加载: 1>  什么是懒加载? 懒加载又称为延时加载,即在系统调用的时候加载,如果系统不调用则不会加载.所谓的懒加载其实就是重写其 get 方法. 2>  特点:在使用懒加载的时候要先判断该方法是否已经存在,如果不存在则再进行实例化. 3>  优点: 不必将创建对象的方法都写在 viewDidLoad 里面,代码可读性更强. 每个控件的getter 方法分别负责各自的实例化处理,独立性强,耦合性低. 4>  使用步骤: 声明一个属性.该属性可以是私有属性也可以是在. h 文件