el-tree设置单独icon,并且子级单独设置选择框

图片可能看着不太合理,是后端在调数据,我只是抽空分享一下,最终的效果是:在有子级的情况下是图标,无子级会是选择框,层级定义上与后端数据交流好即可了,各位可以随机应变做出调整。

单独设置icon图标是通过插槽来实现的,是有固定写法形式的,如 node,data,class:custom-tree-node

 HTML代码段:

<div class="content_tree">
    <el-tree 
        :data="treeData" 
        node-key="id" 
        default-expand-all 
        :expand-on-click-node="false" 
        :props="defaultProps" 
        ref="elTreeNodeRef">
             <span class="custom-tree-node" slot-scope="{node,data}">
                <span v-if="data.list">
                    <i class="el-icon-files"></i>
                </span>
                <el-checkbox v-else v-model="node.checked"></el-checkbox>
                <span style="margin-left:5px;">
                    {{node.label}}
                </span>
             </span>
    </el-tree>
</div>

有的同学在里面刚使用插槽的时候,是因为可能吧node与data搞反了,导致的。

data.list是后端定义的,与children同义去理解就好了。这里判断是否存在子级使用的。

下面说checked:可以直接引用element组件库中的el-checkbox来用,el-tree支持refs通过getCheckedNodes方法获取选中的一个集合数组。

 <div class="titleinstructions">
    绑定设备
    <span class="btn_tagg" @click.stop="subCheckedTree">保存</span>
</div>
subCheckedTree(){

   console.log(this.$refs.elTreeNodeRef.getCheckedNodes());

},

好了,就是这样,希望可以帮助到各位!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
el-select-treeElement UI 提供的一个树形选择组件,可以实现多级树结构的选择功能。在 el-select-tree 中,回显显示子级及所选的所有父级可以通过以下步骤实现: 1. 首先,需要准备一个树形数据源,数据源中每个节点包含一个唯一的标识符(如 id),以及父节点的标识符(如 parentId)。 2. 在 el-select-tree 中,使用 v-model 绑定一个变量来保存所选的节点。 3. 在 el-select-tree 的模板中,设置 show-all-levels 属性为 true,以显示所有层级的节点。 4. 在 el-select-tree 的模板中,使用 scoped slot 来自定义每个节点的显示内容。在 scoped slot 中,可以根据节点的层级关系来添加前缀或样式,以区分父级和子级节点。 5. 在 el-select-tree 的模板中,使用 filter-node-method 属性来自定义过滤节点的方法。在过滤方法中,可以根据节点的层级关系来判断是否显示该节点。 下面是一个示例代码: ```html <template> <el-select-tree v-model="selectedNode" :data="treeData" show-all-levels :filter-node-method="filterNode"> <template slot-scope="{ node }"> <span v-if="node.level === 0" style="font-weight: bold">{{ node.label }}</span> <span v-else>{{ '└─'.repeat(node.level) }}{{ node.label }}</span> </template> </el-select-tree> </template> <script> export default { data() { return { selectedNode: null, treeData: [ { id: 1, parentId: null, label: 'Node 1' }, { id: 2, parentId: 1, label: 'Node 1-1' }, { id: 3, parentId: 2, label: 'Node 1-1-1' }, { id: 4, parentId: 2, label: 'Node 1-1-2' }, { id: 5, parentId: 1, label: 'Node 1-2' }, // 其他节点... ] }; }, methods: { filterNode(node, keyword) { // 过滤方法示例,根据节点的层级关系判断是否显示该节点 if (node.level === 0 || node.label.includes(keyword)) { return true; } return false; } } }; </script> ``` 在上述示例中,el-select-tree 组件绑定了一个变量 selectedNode,用于保存所选的节点。treeData 是树形数据源,包含了多个节点。通过设置 show-all-levels 属性为 true,可以显示所有层级的节点。使用 scoped slot 来自定义每个节点的显示内容,并根据节点的层级关系添加前缀或样式。通过 filter-node-method 属性来自定义过滤节点的方法,根据节点的层级关系判断是否显示该节点。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值