Vue Treeselect树形下拉框的使用

这篇具有很好参考价值的文章主要介绍了Vue Treeselect树形下拉框的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    昨天在做一个表单,里面有一项是以tree形式为选项的select框↓ 

treeselect,vue,vue.js,javascript,前端,elementui,经验分享

    于是乎,用到了vue中的treeselect组件,在此记录一下。

 有几个比较重要的点:

1、绑值, :value=“form.astdeptId”,主要绑的就是id或者code,通过id或code找到对应的label回显
2、options是数据源,正常调接口获取就行了
3、append-to-body="true"这个最好加上,可能会遇到下拉的弹窗打不开或者只有一点点高的情况
4、normalizer就是把我们自己的后端返的数据格式按树插件需要的格式转换
5、select点击事件里赋值
6、插槽slot=“option-label” 是下拉框的值
7、插槽slot=“value-label” 是输入框回显的值

使用

1.放入目标位置

      <el-form-item label="父节点" v-model="formData.parentCategoryKey">
        <listBoxF>
          <template slot="content">
            <treeselect class="treeSelect-option" v-model="value" :multiple="multiple" :normalizer="normalizer" :options="list" placeholder="请选择" @select="selectNode" />
          </template>
        </listBoxF>
      </el-form-item>

2. 用watch来监听value的变化

    watch:{
      // 监听选中值的变化
      value:{
        deep:true,
        handler(val){
          this.$emit('getSelectVal',val)
        }
      }
    },

3.一定要记得设置好替换的字段 

      // 自定义参数键值名称
      normalizer(node){
          //去掉children=[]的children属性
          if(node.children && !node.children.length){
              delete node.children;
          }
          return {
            id: node.categoryKey,
            label: node.categoryName,
            children: node.children,
            level: node.level
          }
      },

4. 选中的时候,进行相关赋值操作

      selectNode(node){
        this.formData.level=node.level+1
        this.formData.parentCategoryKey=node.categoryKey || ''
        this.value=node.categoryKey
        console.log("selectNode(node):",this.formData)
      },

5. 初始化,一定要写null,否则默认情况下会出现 unknown

    created(){
      // console.log(this.value,this.formData)
      this.getTree()
      this.reset()
      if(this.formData.parentCategoryKey){
        this.value=this.formData.parentCategoryKey
      }else{
        this.value=null
      }
    }

附加:里面我用到的插槽

<template>
  <div class="clearfix list-box-f">
    <div class="text">
      <slot name="name"></slot>
    </div>
    <div class="cont">
      <slot name="content"></slot>
    </div>
  </div>
</template>
<script>
  export default {
    name: 'list-box-f'
  }
</script>

<style lang="scss" rel="stylesheet/scss">
  .list-box-f {
    margin-bottom: 20px;
    &:last-child {
      margin-bottom: 0;
    }
    .text {
      width: 144px;
      float: left;
      text-align: right;
      line-height: 32px;
      padding-right: 8px;
      >strong {
        color: #ff0000;
        padding-right: 4px;
      }
    }
    .cont {
      // width: calc(100% - 162px);
      float: left;
      .textarea-content {
        .v-input {
          textarea {
            min-height: 400px !important;
            font-size: 12px;
          }
        }
      }
      >.v-radio-group,>.ans-radio-group {
        padding-top: 7px;
      }
      >.v-input {
        textarea {
          height: 70px;
        }
      }
      .v-radio-group-item {
        font-weight: normal;
        margin-top: 1px;
      }
    }
  }
</style>

 效果:

treeselect,vue,vue.js,javascript,前端,elementui,经验分享

 踩坑:

因为一开始我吧value初始化为''、{}两种方式,都不行,会出现unknown

treeselect,vue,vue.js,javascript,前端,elementui,经验分享最后我改为value,就可以了!

它是根据id来与label进行匹配的,找不到key他就对不上。 treeselect 绑定的值需要与options输出的id相对应,若是空值,请不要给空字符串,0,等,因为会出现unknown,并且当选择了值以后,会出现选中的值后面会拼上unknown。

解决办法:把v-modle绑定的值设为null,初始化的时候才不会出现unknown。文章来源地址https://www.toymoban.com/news/detail-738019.html

到了这里,关于Vue Treeselect树形下拉框的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Element树型下拉框/vue2树型下拉框/TreeSelect/树型下拉

            今天小谭要给大家分享的是基于element ui 的下拉框和树型控件二次分装的树型下拉框,element plus新增了这一组件,但是对于还在使用vue2的我来说,就很不友好。组件可以实现单选和多选,以及其他常用功能,废话不多说,直接上效果图: 效果图如上,接下来实现代码

    2024年02月13日
    浏览(48)
  • vue-treeselect(适配Vue3.2)及Element-plus的TreeSelect组件

    1.1、vue2 使用的版本 官网地址:https://www.npmjs.com/package/@riophae/vue-treeselect 是3年前更新的 安装: 如果你的项目是vue3的话,使用该安装命令会提示,此命令只针对vue2.2版本 具体提示内容是: peerDependencies WARNING @riophae/vue-treeselect@latest requires a peer of vue@^2.2.0 but vue@3.2.39 was instal

    2024年02月15日
    浏览(59)
  • vue-treeselect的基本使用以及如何更改id以及label的绑定值

    一、最主要的几点就是 1、绑值:value=“form.astdeptId”,主要绑的就是id,通过id找到对应的label回显 2、options是数据源,正常调接口获取就行了 3、append-to-body=\\\"true\\\"这个最好加上,可能会遇到下拉的弹窗打不开或者只有一点点高的情况 4、( ******) normalizer属性 就是把我们自己

    2024年02月02日
    浏览(44)
  • 【前后端的那些事】开源!treeSelect树形结构数据展示

    前言 :最近写项目,发现了一些很有意思的功能,想写文章,录视频把这些内容记录下。但这些功能太零碎,如果为每个功能都单独搭建一个项目,这明显不合适。于是我想,就搭建一个项目,把那些我想将的小功能全部整合到一起。实现 搭一次环境 ,处处使用。 本文主要

    2024年02月01日
    浏览(39)
  • vue-treeselect及el-tree点击节点获取上级节点的数据

    打印这个Node,如下: 展开parent 这个parent就是父节点,父节点中还包含了它自己的父节点,如果无父节点,返回null el-tree获取父节点还是挺简单的,树组件内部已经返给你了,直接获取就行 把树数据源,节点的父id传进来 //用当前项的id和父id对比是因为,当前项的父id即父节

    2024年02月11日
    浏览(40)
  • vue2+elementUI 下拉树形多选框

    效果如图所示:  1.新建el-select-tree.vue组件 2.页面引入组件使用

    2024年02月12日
    浏览(43)
  • vue element select下拉框树形多选

    components 文件下新建 SelectTree文件 index.vue SelectTree index.vue 使用:

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

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

    2024年02月13日
    浏览(43)
  • 微信小程序多列下拉框的实现(树形数据结构和单数组数据结构形式)

    利用微信小程序api,实现不同传输数据格式下的多列下拉框实现 首先了解一下picker中的事件 这里是官方文档,具体意思就是 当你滑动多列中的某一列的时候, bindcolumnchange 事件就会触发。当选择完毕点击确定的时候 bindchange 事件就会触发 微信小程序的多列下拉框是真的反人

    2024年02月07日
    浏览(49)
  • 解决 Ant TreeSelect(树选择)组件可以使用键盘选中 disabled(已禁用)项的问题

    最近在使用 Ant Design Vue(V3.2.20)的 TreeSelect 组件时发现一个问题: tree-data 中部分数据的 disabled 属性设置为了 true ,选项是“禁用”状态,无法通过鼠标点击选中,但是可以通过键盘 ↑ ↓ 键切换选项,按下 Enter 键选中。 一开始还以为是 bug,后来通过查阅 文档 和测试发现

    2024年01月19日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包