首页 > 其他分享 >element-ui 的下拉树

element-ui 的下拉树

时间:2023-09-03 19:13:49浏览次数:31  
标签:name 下拉树 list id item ui element data children

我了解到在 element-ui 中并没有下拉树这个组件,所以只能用<el-select> 组件和<el-tree> 结合来实现

1、html

<script src="../resources/js/vue.js"></script>
<script src="../resources/js/element-ui/index.js"></script>
<link href="../resources/css/element-ui/index.css" rel="stylesheet">

<body>
  <div class="select-trees" id="selectTree">
    <el-select v-model="initValue" filterable multiple :clearable="false" :collapse-tags="false" :placeholder="'请选择'+placeholderRemark" class="select-number select-border" 
        popper-class="selectClass" :popper-append-to-body="false" @remove-tag="handlerRemoveTag" @change="changeOption" style="width: 200px">
    <el-option :value="optionValue" style="height: auto">
      <el-tree show-checkbox ref="tree" node-key="id" empty-text="暂无数据" :data="dataTreeList" :props="propsData" :check-on-click-node="false" 
        :expand-on-click-node="true" :default-checked-keys="selectdArray" @check-change="handleCheckChange"/>
      </el-option>
    </el-select>
</div>
</body>
<script src="../js/selectTree.js" type="module"></script>

2、JS

new Vue({
    el:"#selectTree",
    data:{
        initValue: [],
        optionValue: [],
        placeholderRemark: '',
        selectdArray: [],
        resultArray: [],
        deleteFlag: '',
        propsData: {
            id: 'id',
            label: 'name',
            children: 'children'
        },
        dataTreeList: [
            { id: '01', name: '水果', children: [
                { id: '0101', name: '苹果', children: [
                    { id: '010101', name: '红苹果', children: [] },
                    { id: '010102', name: '青苹果', children: [] },
                    { id: '010103', name: '黄苹果', children: [] }
                ] },
                { id: '0102', name: '香蕉', children: [] },
                { id: '0103', name: '橙子', children: [] }
            ] },
            { id: '02', name: '动物', children: [] },
            { id: '03', name: '蔬菜', children: [] }
        ]
    },
    methods: {
        changeOption(item) {
            console.log('select======', this.initValue,this.optionValue);
        },
        handlerRemoveTag(item) {
            // 删除选中的tag
            let removeValue = this.chooseValue(this.resultArray, 'name', item, 0);
            this.deleteCharacter(this.optionValue, removeValue.id);
            this.deleteCharacter(this.selectdArray, removeValue.id);
            // 同步更新下拉内容
            this.$refs.tree.setChecked(removeValue.id, false, true);
        },
        handleCheckChange(data, checked, indeterminate) {
            // 下拉树的复选框操作
            if (checked) {
                this.initValue.push(data.name);
                this.optionValue.push(data.id);
                this.selectdArray.push(data.id);
                this.resultArray.push({id: data.id, name: data.name});
            } else {
                this.deleteCharacter(this.initValue, data.name);
                this.deleteCharacter(this.optionValue, data.id);
                this.deleteCharacter(this.selectdArray, data.id);
                this.chooseValue(this.resultArray, 'id', data.id, 1);
            }
        },
        deleteCharacter(list, str) {
            let index = list.indexOf(str);
            if (index > -1) {
                list.splice(index, 1);
            }
            return list
        },
        chooseValue(list, key, str, type) {
            let result = null;
            list.forEach((item, index)=> {
                if (item[key] === str) {
                    result = item;
                    list.splice(index, 1);
                }
            });
            return type ? list : result;
        }
    }
})

  

标签:name,下拉树,list,id,item,ui,element,data,children
From: https://www.cnblogs.com/wwssgg/p/17675366.html

相关文章

  • 手把手教你vue3-ts-uniapp-vite创建多端小程序-3 统一ui,uni-ui库
    uni-ui官网地址https://uniapp.dcloud.net.cn/component/uniui/quickstart.html1.安装sass、sass-loadernpminstallsass-Dnpminstallsass-loader-D2.安装uni-uinpminstall@dcloudio/uni-ui3.配置easycom。在pages.json中配置"easycom":{"autoscan&q......
  • JavaGuide基础3
    异常Exception和ErrorException:程序本身可以处理的异常,可以通过catch来进行捕获。Exception又可以分为CheckedException(受检查异常,必须处理)和UncheckedException(不受检查异常,可以不处理)。Error:Error属于程序无法处理的错误,不建议通过catch捕获。例如Jav......
  • Google C++编程规范(Google C++ Style Guide)
    参考链接:Google代码规范C++总结Google开源项目风格指南——中文版GoogleC++StyleGuide是一份不错的C++编码指南,我制作了一张比较全面的说明图,可以在短时间内快速掌握规范的重点内容。不过规范毕竟是人定的,记得活学活用。看图前别忘了阅读下面两条重要建议:保持一致也......
  • Arduino 的几种点灯方式
    延时函数点灯//定义灯管脚constuint8_tblinkPin=LED_BUILTIN;//依靠延时函数来闪烁voidfuncBlink(intsecond){unsignedlongmillisSecond=second*1000;//亮灯digitalWrite(blinkPin,HIGH);delay(millisSecond);//延时熄灯digitalWrite(bl......
  • elementui el-select设置默认值且默认值不允许删除
    参考网址:【记录】el-select已选项禁止删除el-select编辑时已选择的项不允许删除、element-ui里面的下拉多选框el-select时,默认值不可删除在项目中el-select设置默认值且默认值不允许删除和取消选中通过vue全局指令实现该要求exportdefault{ update(el,bindings){ ......
  • C++ Core Guidelines解析 电子书 pdf
    关注公众号:红宸笑。回复:电子书即可  在《C++CoreGuidelines解析》中,C++专家讲师RainerGrimm提炼出了CoreGuidelines中的精髓,去除了晦涩难懂的内容,分享了新的见解和背景,并提供了自己培训课程中经过充分测试的示例。对于使用C++11及后续版本C++的有经验程序员,G......
  • Implementing Domain Driven Design (A practical guide for implementing the Domain
    CONTENTSIntroduction..................................................Goal......................................................SimpleCode...................................................................WhatistheDomainDrivenDesign?...........
  • Lnton 羚通算法算力云平台如何在 OpenCV-Python 中使用 cvui 库创建图像
    CVUI之图像Pythonimportnumpyasnpimportcv2importcvuidefimage_test():WINDOW_NAME='Image-Test'#创建画布frame=np.zeros((400,600,3),np.uint8)#读取图像image=cv2.imread("lena-face.jpg",cv2.IMREAD_COLOR)......
  • elementui 长表单验证滚动到首个错误位置
    this.$refs['form'].validate(valid=>{if(valid){//验证通过}else{//验证失败this.$nextTick(()=>{letisError=document.getElementsByClassName('is-error') isError[0].......
  • 2、Vue中安装element-plus
    1、在项目终端命令行中输入:pnpminstallelement-plus--save 2、项目中导入elementimportElementPlusfrom'element-plus'import'element-plus/dist/index.css' 3、使用element组件 ......