Dreamer Dreamer
首页
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)

lycpan233

白日梦想家
首页
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)
  • Vue

    • Element-UI 表单回车触发页面刷新问题
    • El-table tree + sortablejs 踩坑记录
      • el-table 实现树形结构
      • sortablejs
  • JavaScript

  • 前端
  • Vue
lycpan233
2024-03-11
目录

El-table tree + sortablejs 踩坑记录

# el-table 实现树形结构

  1. 首先需要 tableData 是树形结构。
[
  {
    id: 1,
    date: "2016-05-02",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1518 弄",
  },
  {
    id: 2,
    date: "2016-05-04",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1517 弄",
  },
  {
    id: 3,
    date: "2016-05-01",
    name: "王小虎",
    address: "上海市普陀区金沙江路 1519 弄",
    children: [
      {
        id: 31,
        date: "2016-05-01",
        name: "王小虎",
        address: "上海市普陀区金沙江路 1519 弄",
      },
      {
        id: 32,
        date: "2016-05-01",
        name: "王小虎",
        address: "上海市普陀区金沙江路 1519 弄",
      },
    ],
  },
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  1. tree-props 参数
{ hasChildren: 'hasChildren', children: 'children' }
1
  • hasChildren, 用于懒加载, 若不涉及不需要该属性。
  • children, 代表子集数据, 这里有一点特别注意。 其key值需要和当前数据集的值一致,比如你是 a.childList, 就用 childList。 但是都需要在当前层级, 举个反例: 如 a.info.childList 这种就不支持。

# sortablejs

  1. 位序变更好像有两种方式,可以通过参数配置。这里讲默认的方式。

选中当前 item, 允许 上移/下移 。 上移是指当前目标插入到目标位置之前, 下移指当前目标插入目标位置之后。

例如: [ 1, 2, 3, 4, 5 ] 1 拖到最后 oldIndex = 0 , newIndex = 4 . 其它位置顺延 4 拖到 3 的位置, oldInde = 3, newIndex = 2. 其它位置顺延

  1. 若涉及父子结构需要特殊处理
  • 首先,父子结构在表格上本质是同级的,只是 class 有所不同。所以要拆分 tableData 和 sortData 来处理。
  • sortData 是 tableData 的扁平结构。即需要将树形结构压平。
  1. 若实现多级结构不允许交叉拖动,需要在 onMove 中通过 level 进行判断,返回 bool 值。

  2. 若树形结构变更以后,界面未刷新可以通过变更 table 的 key 值进行刷新。需要特别注意的是,key 值变更后需要重新初始化sortable!!!!!

编辑 (opens new window)
上次更新: 2025/04/15, 03:48:14
Element-UI 表单回车触发页面刷新问题
JavaScript部分特殊值判断记录

← Element-UI 表单回车触发页面刷新问题 JavaScript部分特殊值判断记录→

最近更新
01
docker基础概念
02-26
02
js 获取变量准确类型
02-19
03
Mysql SQL 优化思路
02-18
更多文章>
Theme by Vdoing | Copyright © 2023-2025 Dreamer | MIT License
粤ICP备2025379918号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式