Vue Treeselect树形下拉框的使用小结

 更新时间:2023年10月17日 10:21:00   作者:小白探索世界欧耶!~  
树形下拉框是一个带有下列树形结构的下拉框,本文主要介绍了Vue Treeselect树形下拉框的使用小结,具有一定的参考价值,感兴趣的可以了解一下

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

于是乎,用到了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>

 效果:

踩坑:

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

最后我改为value,就可以了!

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

解决办法:把v-modle绑定的值设为null,初始化的时候才不会出现unknown。

到此这篇关于Vue Treeselect树形下拉框的使用小结的文章就介绍到这了,更多相关Vue 树形下拉框内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue事件符.capture的含义及用法说明

    Vue事件符.capture的含义及用法说明

    这篇文章主要介绍了Vue事件符.capture的含义及用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • vite前端构建Turborepo高性能monorepo方案

    vite前端构建Turborepo高性能monorepo方案

    这篇文章主要为大家介绍了vite前端构建Turborepo高性能monorepo方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 详解通过JSON数据使用VUE.JS

    详解通过JSON数据使用VUE.JS

    本篇文章主要介绍了详解通过JSON数据使用VUE.JS,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 最简单的vue消息提示全局组件的方法

    最简单的vue消息提示全局组件的方法

    这篇文章主要介绍了最简单的vue消息提示全局组件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • 在Vue3中使用localStorage保存数据的流程步骤

    在Vue3中使用localStorage保存数据的流程步骤

    在前端开发中,尤其是利用Vue3构建现代Web应用时,掌握如何使用本地存储(localStorage)来保存数据是非常重要的能力,在这篇博客中,我将详细介绍如何在Vue3中使用localStorage保存数据,并提供示例代码来帮助理解,需要的朋友可以参考下
    2024-06-06
  • 利用vue+elementUI实现部分引入组件的方法详解

    利用vue+elementUI实现部分引入组件的方法详解

    这篇文章主要给大家介绍了关于利用vue+elementUI实现部分引入组件的相关资料,以及介绍了vue引入elementUI报错的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11
  • springboot vue接口测试前端模块树和接口列表

    springboot vue接口测试前端模块树和接口列表

    这篇文章主要为大家介绍了springboot vue接口测试前端模块树和接口列表,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 关于vue.extend和vue.component的区别浅析

    关于vue.extend和vue.component的区别浅析

    最近工作中遇到了vue.extend,vue.component,但二者之间的区别与联系是什么呢?下面这篇文章主要给大家介绍了关于vue.extend和vue.component区别的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • Vue双向绑定实现原理与方法详解

    Vue双向绑定实现原理与方法详解

    这篇文章主要介绍了Vue双向绑定实现原理与方法,结合实例形式详细分析了发布者-订阅者模式、脏值检查、数据劫持与双向绑定相关实现技巧,需要的朋友可以参考下
    2020-05-05
  • vue验证码组件使用方法详解

    vue验证码组件使用方法详解

    这篇文章主要为大家详细介绍了vue验证码组件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07

最新评论