使用 filterNode 函数过滤 Element UI TreeSelect 中的节点

Element UI 的 TreeSelect 组件提供了一个 filter-node-method 属性,可以用来过滤树形结构中的节点。我们可以自定义一个函数来实现过滤逻辑,例如以下代码示例展示了如何过滤与 formData.deptName 相同的节点以及其子节点:

const filterNode = (value: string, data: Tree) => {
  if (!value) return true;
  if (data.label === value) return false; // 如果节点的 label 与 formData.deptName 相等,则不显示
  if (data.children) {
    // 递归过滤子节点
    return !data.children.some(child => !filterNode(value, child));
  }
  return true;
};

在模板中,将 filterNode(formData.deptName) 绑定到 filter-node-method 属性上,即可使用 formData.deptName 来过滤 filteredDeptList

<el-form-item label="上级部门" prop="parentId" v-if="formData.parentId !== '0'">
  <el-tree-select ref="treeRef" v-model="formData.parentId" clearable :data="filteredDeptList" node-key="deptId"
    check-strictly :default-expanded-keys="[formData.parentId]" :default-checked-keys="[formData.parentId]"
    :props="{ label: 'deptName', value: 'deptId' }" :filter-node-method="filterNode(formData.deptName)" :suffix-icon="CaretBottom"
    style="width: 450px" />
</el-form-item>
<el-form-item label="上级部门" prop="parentId" v-else>
  <el-input v-model="formData.parentId" style="width: 450px"></el-input>
</el-form-item>

这样,如果 formData.deptName 包含在选中的节点中,就不会显示 formData.deptName 和其子级内容。

使用 filterNode 函数过滤 Element UI TreeSelect 中的节点

原文地址: https://www.cveoy.top/t/topic/pftQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录