当前位置: 首页 > news >正文

el-table折叠懒加载支持排序

el-table折叠懒加载支持排序

因为el-table懒加载的子节点是通过缓存实现的,如果想在展开的情况下直接刷新对应子节点数据,要操作el-table组件自身数据,否则不会更新

以排序功能为例

	 maps: new Map() //用于存储子节点懒加载的数据
	// 加载子节点的load方法
	async load(tree, treeNode, resolve) {
      // 保存点击节点的信息
      this.maps.set(tree.precinctId, { tree, treeNode, resolve })
      let params = {
        orderBy: this.orderBy
      }
      let treeData = []
      this.tableLoading = true
      let { data: res } = await getData(params)
      this.tableLoading = false
      if (res.code === 200) {
        treeData = res.data
      } else {
        treeData = []
      }
      setTimeout(() => {
        resolve(treeData)
      }, 300)
    },
  // 点击排序后,先获取父节点数据,然后遍历数据,判断是否存在懒加载节点
  sortChange(){
    await this.getTableData(false)  
    this.tableData.forEach(item => {
      this.refreshLoadTree(this.$refs.tableRef.store.states, this.maps, item.precinctId)
    })
  },

    // 更新懒加载节点
    refreshLoadTree(state, maps, id) {
      let treeId = id
      if (maps.get(id)) {
        // 获取节点状态
        const treeStatus = state.treeData[treeId]
        const { tree, treeNode, resolve } = maps.get(id)
        this.$set(state.lazyTreeNodeMap, treeId, []) // 先清空
        if (tree) {
          const { expanded, loaded } = treeStatus
          // 如果未展开但已经缓存
          if (!expanded) {
            if (loaded) {
              // 修改为未加载状态
              this.$set(this.$refs.tableRef.store.states.treeData[treeId], 'loaded', false)
            }
          } else {
            // 重新执行父节点加载子级操作
            this.load(tree, treeNode, resolve)
          }
        }
      }
    },

相关文章:

  • -PHP 应用文件管理模块包含上传遍历写入删除下载安全
  • C++调用ffmpeg解复用、解码案例
  • vue学习九
  • Apache APISIX 架构浅析
  • 巧用输出变量,提升Dolphinscheduler工作流灵活性和可维护性
  • 【多线程-第四天-自己模拟SDWebImage的下载图片功能-自定义block和传递参数 Objective-C语言】
  • 技术引领未来创新发展引擎
  • 库存扣减解决方案
  • 南京审计大学:《 面向工程审计行业的DeepSeek大模型应用指南》.pdf(免费下载)
  • 7. 【Vue实战--孢子记账--Web 版开发】-- 收支分类设置
  • MySQL 调优:查询慢除了索引还能因为什么?
  • 设计模式之责任链模式:原理、实现与应用
  • 各软件快捷键
  • 【CXX-Qt】2.5 继承
  • 基于认证的 Harbor 容器镜像仓库
  • 基于koajsAdmin+mongodb的后台管理快速开发框架安装运行记录
  • 深度学习-151-Dify工具之创建一个生成财务报表的智能体Agent
  • 【容器运维】docker搭建私有仓库
  • 【MySQL篇】复合查询
  • 数学爱好者写的编程系列文章
  • 中方就乌克兰危机提出新倡议?外交部:中方立场没有变化
  • 红场阅兵即将开始!中国人民解放军仪仗队亮相
  • 上海杨浦:优秀“博主”购房最高可获200万补贴
  • 悬疑推理联合书单|虫神山事件
  • 媒体起底“速成洋文凭”灰产链,专家:我们要给学历“祛魅”
  • 万里云端遇见上博--搭乘“上博号”主题飞机体验记