elementUI动态加载的树状选择器

如图所示:


树状选择器

在elementUI中,并没有提供这样的选择器组件,所以需要自己组装一个。
其实这并不是一个选择器,只是一个带icon的输入框和背景色为白色的树状区域。


icon

html:

  <el-input
    placeholder="请选择巡检对象"
    v-model="formData.inspectObjectName"
    icon="caret-bottom"
    readonly="readonly"
    @click.native="isShowSelect = !isShowSelect">
  </el-input>
  <el-tree v-if="isShowSelect"
           empty-text="暂无数据"
           :expand-on-click-node="false"
           :data="inspectionObjectOptions"
           :props="defaultProps"
           :load="loadNode"
           lazy
           @node-click="handleNodeClick"
           class="objectTree">
  </el-tree>

css:

.objectTree {
      position: absolute;
      overflow: auto;
      z-index: 100;
      width: 100%;
      height: 300px;
 }

js:

 // 1.参数
 // 表单数据
 formData: {
   // 传给后台的id
   inspectObject: "",
   // 输入框显示的
   inspectObjectName: ""
 },
 // 是否显示巡检对象的树状选择器
 isShowSelect: false,
 // 巡检对象的选项数据
 inspectionObjectOptions: [],
 // 巡检对象的选项的配置参数
  defaultProps: {
      id: "id",
      label: 'departName',
      children: 'children'
  },

  // 2.方法
  // 点击巡检对象的选择器的树节点
  handleNodeClick(data, Node) {
    // 如果是顶级父节点
    if (Node.parent.level === 0) {
      // 不会触发事件
    }
    else {
      this.formData.inspectObjectName = data.departName;
      this.formData.inspectObject = data.id;
      // 关闭选择器
      this.isShowSelect = false;
    }
  },
  // 加载树结点
  loadNode(node, resolve) {
    // 如果是顶级的父节点
    if (node.level === 0) {
      // 查找两个顶级巡检对象
      findTopPrincipleTarget().then(res => {
        if (res.success) {
          return resolve(res.obj);
        } else {
          this.$message.error(res.msg);
        }
      });
    }
    else {
      let params = {
        parentId: node.data.id,
        principleId: this.formData.principleLine
      };
      // 根据父节点id找寻下一级的所有节点 
      findPrincipleTarget(params).then(res => {
        if (res.success) {
          return resolve(res.obj);
        } else {
          this.$message.error(res.msg);
        }
      });
    }
  },
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,532评论 25 708
  • 为了打造新面貌,楼下去年才为了新型像铺就的路又被破翻。告示明说楼上业户的车可以暂停路边。不意,被这‘暂’字摆了一道...
    铭玥咏全阅读 239评论 0 0
  • 今天才真正意识到,母亲多么伟大。她的坚持简直无人能及。而我却丢失了这一点,我只是个贪图享乐,管不住自己的傻叉。 我...
    新能元阅读 138评论 0 0