Element-ui Tree组件:设置多选与默认选中节点

需积分: 9 0 下载量 93 浏览量 更新于2024-09-03 收藏 1007B MD 举报
"Element-UI 是一款基于 Vue.js 的组件库,主要用于构建用户界面。在 Element-UI 中,`el-tree` 组件用于展示层级结构的数据,如文件目录、组织架构等。`el-tree` 提供了丰富的配置选项和交互功能,其中包括多选模式。在多选模式下,可以通过 `default-checked-keys` 属性来指定默认被选中的节点。当设置此属性时,会自动勾选对应的节点及其所有子节点。" 在给定的代码示例中,`el-tree` 组件的配置如下: 1. **`ref="myAuthorityTree"`**: 使用 `ref` 属性为组件创建一个引用,可以在 Vue 实例中通过 `this.$refs.myAuthorityTree` 访问该组件实例,从而实现对组件的直接操作,如获取选中节点、展开/折叠节点等。 2. **`:data="treeData"`**: `data` 属性用于传递树结构的数据,这里的 `treeData` 是一个包含多个节点的对象数组,每个节点至少包含 `id` 和 `name` 属性。 3. **`show-checkbox`**: 添加此属性后,会在每个节点前显示复选框,使得用户可以进行多选操作。 4. **`:node-key="id"`**: 指定每个节点的唯一标识字段,这里设置为 `id`,Element-UI 将根据此字段来识别和操作各个节点。 5. **`:includeHalfChecked="false"`**: 如果设置为 `true`,半选状态的节点也会被包含在 `default-checked-keys` 中。在这个例子中,设置为 `false`,表示不包含半选状态的节点。 6. **`:default-expand-all="true"`**: 自动展开所有父节点,显示所有子节点。 7. **`:default-checked-keys="checkedKeys"`**: 用于指定初始时被选中的节点。`checkedKeys` 应该是一个包含节点 `id` 的数组,这些节点会被预选中。 8. **`:default-expanded-keys="checkedKeys"`**: 此处的用法有误,通常 `default-expanded-keys` 用于指定初始化时展开的节点,而非选中的节点。在示例代码中,作者可能希望同时展开和选中相同的节点,但这是两个独立的行为,应分别处理。 9. **`<el-tree>` 内的 `props` 配置**: `props` 对象定义了节点数据映射到组件属性的方式,如 `label: 'name'` 表示节点的 `name` 字段将作为标签显示。 在数据部分,`treeData` 包含一个根节点和两个子节点。`checkedKeys` 初始化为空数组,稍后会被赋值为 `['2', '3']`,表示初始时要选中 `id` 分别为 2 和 3 的子节点。然而,为了正确设置 `default-checked-keys`,应该只包含实际需要选中的子节点的 `id`,而不包括父节点的 `id`。因此,在实际应用中,如果需要预选中特定子节点,应确保 `checkedKeys` 只包含这些子节点的 `id`。 在 Vue 的 `data` 函数中,我们看到 `checkedKeys` 被初始化为 `['2', '3']`,这会自动选中 `treeData` 中 `id` 为 2 和 3 的子节点。注意,由于 `default-checked-keys` 会自动勾选指定节点及其所有父节点,所以在这个例子中,即使没有显式地包含父节点的 `id`,父节点也会因为其子节点被选中而被自动选中(如果 `includeHalfChecked` 为 `false`)。 总结来说,这段代码演示了如何在 Element-UI 中使用 `el-tree` 组件实现一个多选树,特别是如何设置 `default-checked-keys` 来预选中特定节点,并且展示了如何在 Vue 实例中管理与 `el-tree` 相关的状态数据。