Element UI-实现树形控件单选

本文介绍了如何在ElementUI中定制树形控件,使其支持单选模式。通过设置`show-checkbox`和`check-strictly`属性,配合`@check-change`事件,用户可以实现节点的单选功能,适用于特定业务场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Element UI-实现树形控件单选

由于在有些业务场景需要用到树形控件的单选功能,Element UI默认是多选的,但可以通过Element提供的事件和方法来实现树形控件的单选功能,其代码如下:

<!--
    @author: itmacy
    @desc: 树节点单选
-->
<template>
  <div class="about">
      <el-tree :data="data"
               ref="tree"
               :props="defaultProps"
               node-key="id"
               show-checkbox
               check-strictly
               @check-change="handleNodeClick"/>
  </div>
</template>
<script>
export default {
  data () {
    return {
      data: [{
        id: 1,
        label: '一级 1',
        children: [{
          id: 11,
          label: '二级 1-1',
          children: [{
            id: 111,
            label: '三级 1-1-1'
          }]
        }]
      }, {
        id: 2,
        label: '一级 2',
        children: [{
          id: 21,
          label: '二级 2-1',
          children: [{
            id: 222,
            label: '三级 2-1-1'
          }]
        }, {
          id: 22,
          label: '二级 2-2',
          children: [{
            id: 221,
            label: '三级 2-2-1'
          }]
        }]
      }, {
        id: 3,
        label: '一级 3',
        children: [{
          id: 31,
          label: '二级 3-1',
          children: [{
            id: 311,
            label: '三级 3-1-1'
          }]
        }, {
          id: 32,
          label: '二级 3-2',
          children: [{
            id: 321,
            label: '三级 3-2-1'
          }]
        }]
      }],
      defaultProps: {
        children: 'children',
        label: 'label'
      },
      selectNode: {} // 选中的节点
    }
  },
  methods: {
    handleNodeClick (data, checked) {
      if (checked) {
        this.$refs.tree.setCheckedNodes([data])
        this.selectNode = data
      }
    }
  }
}
</script>

效果如下:
在这里插入图片描述

小结:

  1. 在标签中需要设置: show-checkbox(支持选框)、 check-strictly(勾选时子父节点不关联)
  2. 在使用事件@check-change,通过第二个参数checked来判断是否勾选,当checkedtrue时,通过方法setCheckedNodes([])来设置勾选的节点
### 关于 `el-tree` 实现树形下拉框单选功能 在前端开发中,使用 Element Plus 的组件可以轻松实现复杂的交互需求。对于 `el-tree` 和 `el-select` 联合使用的场景,可以通过自定义方式来实现树形结构的单选下拉框。 #### 组件组合逻辑说明 - **`el-select`** 是用于展示最终选定的结果,其通过 `v-model` 双向绑定所选值。 - **`el-tree`** 提供了树状结构的选择能力,支持节点的展开、折叠以及高亮等功能。 - 当用户点击某个选项时,`handleCheckChange` 方法会被调用来更新当前选中的节点,并同步至 `el-select` 中显示的内容。 以下是具体实现方案: --- #### HTML 部分 ```html <template> <div> <!-- 外部包裹层 --> <el-popover v-model="visible"> <el-tree :data="treeData" node-key="id" highlight-current @node-click="handleNodeClick" ref="treeRef"> </el-tree> <el-button slot="reference">选择</el-button> </el-popover> <!-- 显示已选内容 --> <el-input v-model="selectedLabel"></el-input> </div> </template> ``` --- #### JavaScript 部分 ```javascript <script> export default { data() { return { visible: false, selectedValue: null, // 存储选中的 value 值 selectedLabel: '', // 存储选中的 label 文本 treeData: [ { id: 1, label: '一级菜单', children: [{ id: 2, label: '子项' }] }, { id: 3, label: '另一级菜单'} ] // 树形数据源 }; }, methods: { handleNodeClick(node) { this.selectedValue = node.id; // 更新选中的 Value this.selectedLabel = node.label; // 同步 Label 到输入框 this.visible = false; // 收起弹窗 console.log('Selected Node:', node); // 打印日志以便调试[^1] } } }; </script> ``` --- #### CSS 自定义部分(可选) 如果需要进一步优化样式,可通过以下代码调整: ```css <style scoped> /* 弹出窗口宽度 */ .el-popover { width: 300px; } /* 输入框高度适配 */ .el-input { margin-top: 8px; } </style> ``` --- #### 功能解析 1. **`highlight-current` 属性**: 设置该属性可以让树形控件自动标记当前被选中的节点并高亮显示。 2. **事件监听 (`@node-click`)`: 定义当用户点击某棵树节点时触发的行为,即记录对应的 ID 和名称作为返回结果的一部分。 3. **双向绑定机制 (Vue)**: 将用户的操作实时反映到界面上,既满足视觉反馈又便于后续处理流程衔接。 上述示例展示了如何利用 Vue.js 框架配合 Element UI 库构建一个具备良好用户体验的树形单选下拉列表解决方案。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值