【UI】 elementUI的select-tree组合下拉框,选择后下拉框不收起

这篇具有很好参考价值的文章主要介绍了【UI】 elementUI的select-tree组合下拉框,选择后下拉框不收起。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

【UI】 elementUI的select-tree组合下拉框,选择后下拉框不收起

问题:elementui 的 select 下拉框 搭配 树形菜单 tree 点击菜单 值虽然变化了,但select下拉框没收起

vue代码

<!--
 * @Description: select下拉搭配tree树形 选择
-->
<template>
  <div class="selectTree">
    <el-form ref="form" :model="form" label-width="80px">
      <el-form-item label="树型结构">
        <!-- 单选 -->
        <el-select
          v-model="form.treeData"
          placeholder="请选择"
          style="width: 16rem"
        >
          <!-- 多选 -->
          <!-- <el-select v-model="form.treeData" multiple placeholder="请选择" style="width: 16rem"> -->
          <el-option :value="treeDataValue" style="height: auto">
            <el-tree
              ref="tree"
              :data="data"
              default-expand-all
              node-key="id"
              :props="defaultProps"
              @node-click="handleNodeClick"
            />
          </el-option>
        </el-select>
      </el-form-item>
    </el-form>
  </div>
</template>
<script>
export default {
  data() {
    return {
      form: {
        treeData: "一级 1", // 单选
        // treeData: [], // 多选
      },
      treeDataValue: "1",
      data: [
        {
          id: 1,
          name: "一级 1",
          children: [
            {
              id: 4,
              name: "一级 1-1",
            },
          ],
        },
        {
          id: 2,
          name: "一级 2",
          children: [
            {
              id: 5,
              name: "二级 2-1",
            },
            {
              id: 6,
              name: "二级 2-2",
            },
          ],
        },
        {
          id: 3,
          name: "一级 3",
          children: [
            {
              id: 7,
              name: "二级 3-1",
            },
            {
              id: 8,
              name: "二级 3-2",
            },
          ],
        },
      ],
      defaultProps: {
        children: "children",
        label: "name",
      },
    };
  },
  created() {},
  methods: {
    // 点击树节点
    handleNodeClick(data, node, nodeData) {
      // select 单选
      this.treeDataValue = data;
      this.form.treeData = data.name;
      console.log(data);
      console.log(node.parent.data);
      console.log(nodeData);

      // select 多选(判重后添加到选择结果数组中)
      // this.treeDataValue = data
      // let num = 0;
      // this.form.treeData.forEach(item => {
      //     item == data.name ? num++ : num;
      // })
      // if(num == 0) {
      //     this.form.treeData.push(data.name)
      // }
    },
  },
};
</script>
<style lang="scss">
.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover {
  background-color: #ffffff;
}
.el-select-dropdown__item.hover,
.el-select-dropdown__item:hover {
  background-color: #ffffff;
}
.el-select-dropdown__item.selected {
  font-weight: normal;
}
</style>

解决

1.给下拉框写个ref

<el-select
  v-model="form.treeData"
  placeholder="请选择"
  style="width: 16rem"
  ref="treeSelect"
>
  <el-option :value="treeDataValue" style="height: auto">
    <el-tree
      ref="tree"
      :data="data"
      default-expand-all
      node-key="id"
      :props="defaultProps"
      @node-click="handleNodeClick"
    />
  </el-option>
</el-select>

2.点击下拉框选项的时候判断值有没有赋值(即这个select下拉框的值有没有改变),写个监听,值改变了就收起树形菜单。

我这里是把下拉框显示的值treeDataValue,就写个watch监听它。

watch: {
  treeDataValue() {
    this.$refs.treeSelect.visible = false;
  },
},

至此问题解决

效果【UI】 elementUI的select-tree组合下拉框,选择后下拉框不收起

完整代码

vue文件

<!--
 * @Description: select下拉搭配tree树形 选择
-->
<template>
  <div class="selectTree">
    <el-form ref="form" :model="form" label-width="80px">
      <el-form-item label="树型结构">
        <!-- 单选 -->
        <el-select
          v-model="form.treeData"
          placeholder="请选择"
          style="width: 16rem"
          ref="treeSelect"
        >
          <!-- 多选 -->
          <!-- <el-select v-model="form.treeData" multiple placeholder="请选择" style="width: 16rem"> -->
          <el-option :value="treeDataValue" style="height: auto">
            <el-tree
              ref="tree"
              :data="data"
              default-expand-all
              node-key="id"
              :props="defaultProps"
              @node-click="handleNodeClick"
            />
          </el-option>
        </el-select>
      </el-form-item>
    </el-form>
  </div>
</template>
<script>
export default {
  data() {
    return {
      form: {
        treeData: "一级 1", // 单选
        // treeData: [], // 多选
      },
      treeDataValue: "1",
      data: [
        {
          id: 1,
          name: "一级 1",
          children: [
            {
              id: 4,
              name: "一级 1-1",
            },
          ],
        },
        {
          id: 2,
          name: "一级 2",
          children: [
            {
              id: 5,
              name: "二级 2-1",
            },
            {
              id: 6,
              name: "二级 2-2",
            },
          ],
        },
        {
          id: 3,
          name: "一级 3",
          children: [
            {
              id: 7,
              name: "二级 3-1",
            },
            {
              id: 8,
              name: "二级 3-2",
            },
          ],
        },
      ],
      defaultProps: {
        children: "children",
        label: "name",
      },
    };
  },
  created() {},
  watch: {
    treeDataValue() {
      this.$refs.treeSelect.visible = false;
    },
  },
  methods: {
    // 点击树节点
    handleNodeClick(data, node, nodeData) {
      // select 单选
      this.treeDataValue = data;
      this.form.treeData = data.name;
      console.log(data);
      console.log(node.parent.data);
      console.log(nodeData);

      // select 多选(判重后添加到选择结果数组中)
      // this.treeDataValue = data
      // let num = 0;
      // this.form.treeData.forEach(item => {
      //     item == data.name ? num++ : num;
      // })
      // if(num == 0) {
      //     this.form.treeData.push(data.name)
      // }
    },
  },
};
</script>
<style lang="scss">
.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover {
  background-color: #ffffff;
}
.el-select-dropdown__item.hover,
.el-select-dropdown__item:hover {
  background-color: #ffffff;
}
.el-select-dropdown__item.selected {
  font-weight: normal;
}
</style>

下班~文章来源地址https://www.toymoban.com/news/detail-502809.html

到了这里,关于【UI】 elementUI的select-tree组合下拉框,选择后下拉框不收起的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue2 - 详细介绍element UI中在el-select嵌套el-tree树形控件实现下拉选择树型结构数据的效果实例(组件封装)

    在项目上常用使用到 el-select 和 el-tree 组合实现,记录下两者结合的实现过程。(代码以及注释清晰明了,代码直接使用即可) 要求根据项目接口提供的数据,el-tree 里的数据是一次性返回来的,点击最后一层级时,请求接口,在点击层级下方追加数据追加的数据要显示勾

    2024年04月15日
    浏览(43)
  • elementUI --- el-select 下拉框 日历 级联选择

    element UI 组件库中的 select 选择器 中下拉列表的样式,在页面渲染的时候,总是渲染为仅次于body级别的div ,这样子覆盖样子会影响全局其他的select选择器下拉框样式,试图通过给el-select加父标签来覆盖,然而并没有卵用。 控制台看到的渲染结果: 解决方法: 通过 popper-cla

    2024年02月15日
    浏览(37)
  • el-select与el-tree结合使用,实现select框下拉使用树形结构选择数据

    使用el-select与el-tree,实现如下效果, 代码如下:  注意点:搜索input框的代码一点放在option上面,不要放在option里面,否则一点击搜索框,下拉框就会收起来,不能使用。

    2024年02月13日
    浏览(37)
  • layui下select下拉框不显示或没有效果

    弹层layer选择框没有样式_不可点击_渲染失效的解决办法 一、必须给表单体系所在的父元素加上 class=\\\" layui-form \\\" 在一个容器中设定 class=\\\"layui-form\\\"  来标识一个表单元素块,如果你不想用 form,你可以换成  div  等任何一个普通元素( 推荐用 form );记得要在 外层容器 中定

    2024年02月09日
    浏览(31)
  • elementUi select下拉框触底加载异步分页数据

    在Element UI中,可以通过监听select下拉框的 visible-change 事件来实现触底加载下一页的效果。 方式一:利用elementUi的事件 具体步骤如下: 首先,在select组件中设置: @visible-change=\\\"handleVisibleChange\\\" ref=\\\"mySelect\\\" 在data中定义一个变量pageNum,用于记录当前加载的页码: pageNum: 1, 在m

    2024年02月14日
    浏览(26)
  • vue3+elementUI-plus实现select下拉框的虚拟滚动

    网上查了几个方案,要不就是不兼容,要不就是不支持vue3, 最终找到一个合适的,并且已上线使用,需要修改一下样式: 代码如下: main.js里引用 vue文件: js代码: css代码:

    2024年02月13日
    浏览(32)
  • Vue+EleMentUI实现el-table-colum表格select下拉框可编辑

    在进行采购入库的过程中,有必要对表格中的一行进行快速编辑保存,节省时间,提高工作效率!,而不是每次编辑都要弹窗才可编辑 源码:https://gitee.com/charlinchenlin/store-pos 控制是否显示select下拉框 如果showInput的值与当前的inboundId相同,则显示下拉选项,否则显示数据信息

    2024年02月01日
    浏览(74)
  • a-tree-select 基本使用,下拉框高度和宽度设置、回显时滚动条定位解决。

    1)问题效果 2)理想效果 3)完整代码 说明:设置 dropdownStyle( 下拉菜单样式 ),添加如下代码,高度可自己调整。 :dropdown-style=\\\"{ maxHeight: \\\'400px\\\', overflow: \\\'auto\\\' }\\\" 1)问题效果 2)理想效果 说明:与文本框同宽,内容过长时出现横向滚动条。 3)完整代码 说明:设置 dropdownM

    2024年02月14日
    浏览(26)
  • 实现ElementUI中两个Select选择联动效果

    先上图 通过赋值的方式实现 即子级下拉选项循环数组为空 将所需的值对空数组 重新赋值 代码如下 第一个循环数组为 procedureType 第二个是 causeGroup 暂且称之为父级与子级 须注意的是父级下拉绑定的change事件 要对子级作出滞空操作 也就是 清空子选项的值 不然会出现切换选

    2024年02月15日
    浏览(36)
  • Selenium基础篇之Select下拉列表选择

    大家好,我是空空star,本篇给大家分享一下Selenium基础篇之Select下拉列表选择。 本篇使用的selenium版本如下: Version: 4.8.2 本篇使用的浏览器如下: 在Selenium中,Select是一个非常有用的类,它用于操作HTML页面中的下拉列表。使用Select可以方便地选择下拉列表中的选项,或者获

    2023年04月08日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包