npm 包 vue-drag-sort-tree 使用教程

阅读时长 9 分钟读完

介绍

vue-drag-sort-tree 是一个 Vue.js 的可拖拽树形组件。通过使用该组件,用户可以方便地对树形结构进行拖拽排序。

安装

要安装该 npm 包,请在控制台中运行以下命令:

使用

在使用 vue-drag-sort-tree 之前,你需要导入它,并将其注册到 Vue 中。可以使用下面的示例代码:

-- -------------------- ---- -------
----------
  ---- ---------
    ---------------- --------------------- --------------------- ---------------------------------------------- --
  ------
-----------

--------
------ --------------- ---- ---------------------

------ ------- -
  ----------- -
    ----------------
  --
  ------ -
    ------ -
      --------- -
        -
          ------ ----- ---
          --------- -
            -
              ------ ----- -----
              --------- ---
            --
          --
        --
        -
          ------ ----- ---
          --------- -
            -
              ------ ----- -----
              --------- ---
            --
          --
        --
      --
    --
  --
  -------- -
    --------------------------------- -------- -
      --------------------- ---------
    --
  --
--
---------

API 文档

Props

Name Type Default Value Description
tree-data Array 接受一个节点数据的数组,作为树形结构的数据源
show-checkbox Boolean false 是否在每个节点前面显示复选框
check-on-click Boolean true 点击节点时是否触发复选框的点击事件
drag-icon-class String 指定拖拽时节点的图标的样式类名
drop-icon-class String 指定拖拽时允许放置的区域的图标的样式类名
collapse-icon String - 指定折叠图标的样式(接受一个 SVG path 字符串)
expand-icon String - 指定展开图标的样式(接受一个 SVG path 字符串)
check-icon String - 指定选中节点时复选框的样式(接受一个 SVG path 字符串)
uncheck-icon String - 指定未选中节点时复选框的样式(接受一个 SVG path 字符串)
disabled-icon String - 指定被禁用节点时复选框的样式(接受一个 SVG path 字符串)
allow-drop Function 一个函数,接受两个参数:(draggingNodeData, dropParentNodeData)用于控制是否允许拖拽节点放到指定容器
allow-drag Function 一个函数,接受一个参数:(draggingNodeData)用于控制是否允许拖拽指定节点
drop-target-level Number 设置允许放置到的目标节点的最大级别
drop-target-node Object 指定拖拽结束后节点作为目标节点的父节点,接受一个节点数据对象
auto-expand Boolean/String false 是否在拖拽时自动展开父级节点。如果值为 'always' ,则始终展开父级节点,值为 'hover' 则只在拖拽上方时展开
max-level Number 最大允许的节点层级
container-class String - 指定容器的 CSS 类名
custom-checkbox Boolean false 是否使用自定义复选框,接受一个渲染函数
check-all-child Boolean false 指定是否当选中某个父节点时,自动选中其下所有子节点
empty-text String '没有数据' 没有数据时,显示的文本
show-icon Boolean/String true 是否显示图标,或者是哪个位置显示图标('left'/'right')

事件

Name Description
node-checked-change 在节点的复选框状态改变时触发,传递两个参数:nodeData, checked
node-clicked 当点击节点时触发,传递一个参数:nodeData
node-collapse-change 当节点的折叠状态发生变化时触发,传递两个参数:nodeData, collapsed

示例代码

下面是一个示例代码:

-- -------------------- ---- -------
----------
  ---- ---------
    ---------------- --------------------- ----------------------- ----------------------- --
  ------
-----------

--------
------ --------------- ---- ---------------------

------ ------- -
  ----------- -
    ----------------
  --
  ------ -
    ------ -
      --------- -
        -
          --- --
          ------ ----- ---
          --------- -
            -
              --- --
              ------ ----- -----
              --------- ---
            --
          --
        --
        -
          --- --
          ------ ----- ---
          --------- -
            -
              --- --
              ------ ----- -----
              --------- ---
            --
          --
        --
      --
    --
  --
  -------- -
    --------------------------- -
      ------ ------------------- --- --
    --
    --------------------------- ------------------- -
      ------ --------------------- --- --
    --
  --
--
---------

该代码使用了 allowDragallowDrop 两个函数来控制哪些节点能够被拖拽,哪些容器能够接受拖拽节点。其中,节点的 id 是嵌套深度优先的形式。

结语

vue-drag-sort-tree 为前端工程师提供了一种非常方便和可定制的可拖拽树形组件解决方案。通过该组件,我们可以轻松地实现对树状结构的快速排序。欢迎大家在实际开发中进行尝试,发现其中更多优化空间。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056cda81e8991b448e685f

纠错
反馈