Vue Treeselect樹形下拉框的使用小結(jié)
昨天在做一個表單,里面有一項是以tree形式為選項的select框↓
于是乎,用到了vue中的treeselect組件,在此記錄一下。
有幾個比較重要的點:
1、綁值, :value=“form.astdeptId”,主要綁的就是id或者code,通過id或code找到對應的label回顯
2、options是數(shù)據(jù)源,正常調(diào)接口獲取就行了
3、append-to-body="true"這個最好加上,可能會遇到下拉的彈窗打不開或者只有一點點高的情況
4、normalizer就是把我們自己的后端返的數(shù)據(jù)格式按樹插件需要的格式轉(zhuǎn)換
5、select點擊事件里賦值
6、插槽slot=“option-label” 是下拉框的值
7、插槽slot=“value-label” 是輸入框回顯的值
使用
1.放入目標位置
<el-form-item label="父節(jié)點" 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來監(jiān)聽value的變化
watch:{ // 監(jiān)聽選中值的變化 value:{ deep:true, handler(val){ this.$emit('getSelectVal',val) } } },
3.一定要記得設置好替換的字段
// 自定義參數(shù)鍵值名稱 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,否則默認情況下會出現(xiàn) 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初始化為''、{}兩種方式,都不行,會出現(xiàn)unknown
最后我改為value,就可以了!
它是根據(jù)id來與label進行匹配的,找不到key他就對不上。 treeselect 綁定的值需要與options輸出的id相對應,若是空值,請不要給空字符串,0,等,因為會出現(xiàn)unknown,并且當選擇了值以后,會出現(xiàn)選中的值后面會拼上unknown。
解決辦法:把v-modle綁定的值設為null,初始化的時候才不會出現(xiàn)unknown。
到此這篇關于Vue Treeselect樹形下拉框的使用小結(jié)的文章就介紹到這了,更多相關Vue 樹形下拉框內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Vue 利用指令實現(xiàn)禁止反復發(fā)送請求的兩種方法
這篇文章主要介紹了Vue 利用指令實現(xiàn)禁止反復發(fā)送請求的兩種方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09vue3中vite.config.js相關常用配置超詳細講解
在Vue3項目中vite.config.js文件是Vite構(gòu)建工具的配置文件,它用于定義項目的構(gòu)建和開發(fā)選項,這篇文章主要介紹了vue3中vite.config.js相關常用配置的相關資料,需要的朋友可以參考下2025-04-04微信小程序?qū)崙?zhàn)基于vue2實現(xiàn)瀑布流的代碼實例
瀑布流,又稱瀑布流式布局,是比較流行的一種網(wǎng)站頁面布局,視覺表現(xiàn)為參差不齊的多欄布局,隨著頁面滾動條向下滾動,這種布局還會不斷加載數(shù)據(jù)塊并附加至當前尾部,這篇文章主要介紹了微信小程序?qū)崙?zhàn),基于vue2實現(xiàn)瀑布流,需要的朋友可以參考下2022-12-12Vue3.2單文件組件setup的語法糖與新特性總結(jié)
ue3上線已經(jīng)很久了,許多小伙伴應該都已經(jīng)使用過vue3了,下面這篇文章主要給大家介紹了關于Vue3.2單文件組件setup的語法糖與新特性總結(jié)的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2022-07-07