zoukankan      html  css  js  c++  java
  • elementUI vue tree input 懒加载 输入下拉树型示例 点击其他区域关闭自定义div

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!-- import CSS -->
        <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
        <style>
            .el-tree{
                position:absolute;
                cursor:default;
                background:#fff;
                color:#606266;
                z-index:100;
                border:1px solid #dcdfe6;
                border-radius:5px;
                width:100%;
            }
        /*elementUI vue tree 显示设置高度与滚动条*/
        .ORGTree{
          height:300px;
          overflow:auto;
        }
        </style>
    </head>
    <body>
    
    <div id="app">
        <el-form ref="projectOrg" v-model="projectOrg" label-width="140px" size="mini">
            <el-form-item ref="treeParent" label="维护机构" prop="projectOrg">
                <el-input @click.native="projectOrgFun($event)" v-model="searchOrgId" placeholder="请输入维护机构" readonly></el-input>
                <el-tree  class="ORGTree"
                        v-show="ishowTree"
                        show-checkbox
                        lazy
                        ref="tree"
                        highlight-current
                        @check-change="currentchange"
                        :load="getOrgList"
                        @node-click="handleNodeClick"
                        :props="defaultProps">
                </el-tree>
            </el-form-item>
        </el-form>
    </div>
    <!-- import Vue before Element -->
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <!-- import JavaScript -->
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    
    <script>
        new Vue({
            el: '#app',
            data: function () {
                return {
                    input: [],
                    searchOrgId: '',
    
              //保存被选中的ID, 提交的时候按字符串提交:
                    // var organCodesList=this.organCodes.join(","),
                    // 后台解析的时候使用:
                    //String[] organCodes=organCodesList.split(",");
                    organCodes: [],
                    ishowTree: false,
                    defaultProps: {
                        children: 'children',
                        label: 'label',
                    },
                    projectOrg: '',
    
    
                }
            },
    
            //加载完成时调用
            created: function () {
    
            },
            //方法
            methods: {
    
                //树型点击
                currentchange(data, ischeck) {
                    console.log(data);
                    if (!ischeck) {
                        var index = this.input.findIndex(d => d === data.label);
                        this.input.splice(index, 1);
                        this.organCodes.splice(index, 1);
                    } else {
                        this.input.push(data.label);
                        this.organCodes.push(data.id);
                    }
                    console.log(this.organCodes);
                    var that = this;
                    that.$refs.tree.$el.onmouseleave = function () {
                        that.ishowTree = false;
                    }
                    that.searchOrgId = this.input.toString();
                },
                projectOrgFun(e) {
                    if(this.ishowTree){
                        this.ishowTree = false;
                    }else{
                        this.ishowTree = true;
                    }
    
              //第一种方式:点击其他区域, 消失树
              document.onclick=function(){
                that.ishowTree=false;
              }
              e.stopPropagation();//阻止冒泡
    
              //离开区域的时候树消失
                    var that = this;
                    that.$refs.tree.$el.onmouseleave = function () {
                        that.ishowTree = false;
                    }
    
                    that.$refs.treeParent.$el.onmouseleave = function () {
                        that.ishowTree = false;
                    }
                },
                projectOrgFalse(){
                    this.ishowTree = false;
                },
                handleNodeClick(data) {
                    console.log(data);
                },
    
                getOrgList(node, resolve) {
                    let that = this;
                    console.log(node);
    
                    //等于0表示根节点
                    if (node.level == 0) {
                        //请求数据
                        // that.getFirstRootNodeData(resolve);
    
                        //模拟数据
                        var FirstRootNodeData = [{
                            id: '1',
                            label: "初始根节点01"
                        }, {
                            id: '2',
                            label: "初始根节点02"
                        }];
                        resolve(FirstRootNodeData);
                        //直接返回
                        return;
                    } else {
                        //请求数据(传送要请求的根节点的id)
                        console.log(node.data.id);
                        // that.getLeafNodeData(node.data.id,resolve);
    
                        //模拟数据
                        var LeafNodeData = [{
                            id: '1',
                            label: "叶子节点01"
                        }, {
                            id: '2',
                            label: "叶子节点02"
                        }, {
                            id: '2',
                            label: "叶子节点02"
                        }];
                        resolve(LeafNodeData);
                        return;
                    }
                }
            },
        })
    </script>
    </body>
    </html>

    显示效果:

  • 相关阅读:
    使用Lazy对构造进行重构后比较
    Ninject Lazy Load
    在 MVC 中使用 ninject Lazy Load的一个想法
    在Ninject 向构造参数中注入具有相同类型的参数
    关于 SimpleMembership 中 CreateDate 的问题
    ubuntu下谷歌浏览器字体模糊解决方案
    ubuntu双系统时间错乱
    WPS for Linux字体配置(Ubuntu 16.04)
    VS常见错误
    VMware虚拟机ubuntu显示屏幕太小解决办法
  • 原文地址:https://www.cnblogs.com/yysbolg/p/9871068.html
Copyright © 2011-2022 走看看