el-tree 实现仅限叶子节点显示勾选框,并且只能单选

题外话:如何修改tree当前行的高亮显示样式

.el-tree-node:focus > .el-tree-node__content {
            background-color: #ccc !important;
        }

好,现在正式开始实现标题的问题,具体代码如下
(最后通过 this.$refs.tree.getCheckedNodes() 方法来获取选中的叶子节点)

第一步,实现单选功能

 <el-tree ref="tree"
          show-checkbox
          :check-strictly="true"   ---严格遵循父子不关联
          :data="editCBRdata"
          :props="defaultProps"
          node-key="id"  ---后面要使用getCheckedNodes,必须要先定义此属性
          @node-click="handleNodeClick"
          @check-change="checkChange">
</el-tree>

<script>
	...
	methods:{
	 	handleNodeClick(item,node,self){ //自己定义的editCheckId,防止单选出现混乱
            this.editCheckId=item.id;
            this.$refs.tree.setCheckedKeys([item.id])
    	},
    	checkChange(item,node,self){
            if (node == true) {
               this.editCheckId=item.id;
               this.$refs.tree.setCheckedKeys([item.id])
            }else {
               if (this.editCheckId == item.id) {
                   this.$refs.tree.setCheckedKeys([item.id])
               }
            }
   		}
   }
</script>

第二步,实现指定叶子节点显示勾选框

.el-tree-node{
            .is-leaf + .el-checkbox .el-checkbox__inner{
                display: inline-block;
            }
            .el-checkbox .el-checkbox__inner{
                display: none;
            }
        }

效果图:

在这里插入图片描述

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
对于 el-tree 叶子节点添加单选按钮,你可以使用 el-checkbox 组件来实现。你可以通过自定义 el-tree 的节点模板来实现这一功能。下面是一个简单的示例代码: ``` <template> <div> <el-tree :data="treeData" :props="treeProps" :node-key="treeKey" :default-expanded-keys="expandedKeys" :default-checked-keys="checkedKeys" show-checkbox @check="handleCheck" > <template v-slot="{ node, data }"> <span> <el-checkbox v-model="data.checked" @change="handleCheckboxChange(data)"></el-checkbox> {{ node.label }} </span> </template> </el-tree> </div> </template> <script> export default { data() { return { treeData: [ { label: 'Node 1', children: [ { label: 'Leaf 1' }, { label: 'Leaf 2' }, { label: 'Leaf 3' } ] }, { label: 'Node 2', children: [ { label: 'Leaf 4' }, { label: 'Leaf 5' } ] } ], treeProps: { children: 'children', label: 'label' }, treeKey: 'label', expandedKeys: [], checkedKeys: [] }; }, methods: { handleCheck(checkedNodes) { this.checkedKeys = checkedNodes.map(node => node.data.label); }, handleCheckboxChange(data) { // 处理单个 checkbox 的改变 } } }; </script> ``` 在这个示例中,我们使用了 el-tree 组件来展示树状结构的数据。使用 show-checkbox 属性来显示复选框,同时使用 el-checkbox 组件来实现单选按钮的效果。在节点模板中,我们将 el-checkbox 组件与节点的 label 进行绑定,通过 v-model实现选中状态的绑定,同时通过 @change 事件来处理单个 checkbox 的改变。 你可以根据自己的需求修改示例代码,将数据和事件处理逻辑适配到你的项目中。希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值