Element plus的tree组件实现单选和搜索功能

摘要:
--elementplus树组件实现单选及搜索功能--˃Elementplus树组件实现单选及搜索功能获取选中的节点//给节点添加classconstcustomNodeClass==˃{if{return'no-checkbox-node';}returnnull;};exportdefault{name:'tree-radio',data(){return{customNodeClass,filterText:'',checkedId:'',treeData:[{id:'1',label:'标签1',isPenultimate:true,children:[{id:'1-1',label:'标签1-1',},{id:'1-2',label:'标签1-2',},],},{id:'2',label:'标签2',isPenultimate:true,children:[{id:'2-1',label:'标签2-1',isPenultimate:true,children:[{id:'2-1-1',label:'标签2-1-1',},{id:'2-1-2',label:'标签2-1-2',},],},{id:'2-2',label:'标签2-2',isPenultimate:true,children:[{id:'2-2-1',label:'标签2-2-1',},{id:'2-2-2',label:'标签2-2-2',},],},],},],};},watch:{//过滤操作filterText{this.$refs.treeForm.filter;},},methods:{//过滤节点filterNode{if(!

需求:

Element plus的树组件实现单选和搜索功能。

效果:

Element plus的tree组件实现单选和搜索功能第1张

实现:

<!--element plus 树组件实现单选及搜索功能 -->
<template>
    <div class="tree-radio">
        <h3>Element plus 树组件实现单选及搜索功能</h3>
        <hr />
        <el-input
            type="text"v-model="filterText"placeholder="请输入搜索内容"
        />
        <hr />
        <div class="tree">
            <el-tree
                :data="treeData":props="{
                    label: 'label',
                    children: 'children',
                    class: customNodeClass,
                }"node-key="id"ref="treeForm"show-checkbox
                check-strictly
                default-expand-all
                :filter-node-method="filterNode"@check-change="handleCheckChange"
            />
        </div>
        <hr />
        <el-button type="primary"@click="getCheckedTree"
            >获取选中的节点</el-button
        >
    </div>
</template>

<script>
//给节点添加class
const customNodeClass =(data) =>{
    if(data.isPenultimate) {
        return 'no-checkbox-node';
    }
    return null;
};

export default{
    name: 'tree-radio',
    data() {
        return{
            customNodeClass,
            filterText: '',
            checkedId: '',
            treeData: [
                {
                    id: '1',
                    label: '标签1',
                    isPenultimate: true,
                    children: [
                        {
                            id: '1-1',
                            label: '标签1-1',
                        },
                        {
                            id: '1-2',
                            label: '标签1-2',
                        },
                    ],
                },
                {
                    id: '2',
                    label: '标签2',
                    isPenultimate: true,
                    children: [
                        {
                            id: '2-1',
                            label: '标签2-1',
                            isPenultimate: true,
                            children: [
                                {
                                    id: '2-1-1',
                                    label: '标签2-1-1',
                                },
                                {
                                    id: '2-1-2',
                                    label: '标签2-1-2',
                                },
                            ],
                        },
                        {
                            id: '2-2',
                            label: '标签2-2',
                            isPenultimate: true,
                            children: [
                                {
                                    id: '2-2-1',
                                    label: '标签2-2-1',
                                },
                                {
                                    id: '2-2-2',
                                    label: '标签2-2-2',
                                },
                            ],
                        },
                    ],
                },
            ],
        };
    },
    watch: {
        //过滤操作
filterText(val) {
            this.$refs.treeForm.filter(val);
        },
    },
    methods: {
        //过滤节点
filterNode(value, data) {
            if(!value) return true;
            returndata.label.indexOf(value) !== -1;
        },
        //单选操作
handleCheckChange(data, checked) {
            if(checked) {
                this.checkedId =data.id;
                this.$refs.treeForm.setCheckedKeys([data.id]);
            } else{
                if(this.checkedId ===data.id) {
                    this.$refs.treeForm.setCheckedKeys([data.id]);
                }
            }
        },
        //获取单选选中的结果
getCheckedTree() {
            alert(`当前选中的节点为:${this.checkedId}`);
        },
    },
};
</script>

<style lang="less">// 样式重置,记得把 scoped 属性去掉才能生效
.tree-radio {border:1px solid #ddd;padding:20px;border-radius:5px;h3 {
        font-weight:300;color:#ff9b61;font-size:18px;
    }500px;
    margin: 100px auto;
    .no-checkbox-node {& > .el-tree-node__content {
            .el-checkbox {
                display:none;
            }}
    }
    .el-checkbox__inner {border-radius:50%;
    }}
</style>

免责声明:文章转载自《Element plus的tree组件实现单选和搜索功能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# AES的128位、192位、256位加密JS学习笔记(一)JS处理JSON数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

微信小程序之条件判断

前文: 今天踩了一下午的坑,但是确实很简单的问题。 我说一下需求:扫描商品的二维码,从而判断,同一个二维码不可多次扫描; 点击扫一扫 会在灰色区域展示 扫描的商品信息,比如商品名称,商品码等,但是我们的需求是一物一码,即使是同一个商品也是不同的商品码。 错误示例: 最开始我的想法是做判断,因为我会在相对应的js文件中定义一个 productList:[...

15、高可用 PXC(percona xtradb cluster) 搭建

安装环境: 集群名 pxc_lk 节点1: 192.168.1.20 节点2: 192.168.1.21 节点3: 192.168.1.22 所有节点安装 wgethttp://www.percona.com/redir/downloads/XtraBackup/LATEST/binary/redhat/6/x86_64/percona...

vue Element动态设置el-menu导航当前选中项

1,npm install vuex --save 2,在src下新建vuex文件夹,新建store.js文件; store.js import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const state = { count: 0, adminleftnav...

Angularjs总结(三)摸态框的使用

静态页面: <input class="btn btnStyle "value="提&emsp;取"type="button"ng-click="TQZJDFG() " /> controllers中的方法: 1 $scope.TQZJDFG = function() { 2 //可以将此参数传递到所弹出的摸态框的控制器中 3...

你不知道的 Blob

来自公众号:全栈修仙之路 如果你允许用户从你的网站上下载某些文件,那你可能会遇到 Blob 类型。为了实现上述的功能,你可以很容易从网上找到相关的示例,并根据实际需求进行适当的调整。对于部分开发者来说,在完成上述功能之后,他们并不会继续思考 Blob 是什么? 这就导致了一些开发者,还是停留在熟练使用 API 的层面,当遇到比较棘手的问题时,就束手无策...

MFC逆向-消息响应函数的定位

MFC  ==   Microsoft Foundation Class,微软基础类库,他封装了Windows API以便用户更快速的开发界面功能程序然而该库及其庞大而复杂,需要有C++的功底否则很难解决bug,逆向起来也是需要一定技巧。本人曾总结过Windows消息大全,他截取自winuser.h  commctrl.h,如果将这些消息以及通知码(LV...