溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

vue使用vant TreeSelect實(shí)現(xiàn)分類選擇組件

發(fā)布時(shí)間:2020-11-03 15:08:32 來(lái)源:億速云 閱讀:1729 作者:Leah 欄目:開發(fā)技術(shù)

vue使用vant TreeSelect實(shí)現(xiàn)分類選擇組件?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

中文文檔:TreeSelect 分類選擇

效果展示:

vue使用vant TreeSelect實(shí)現(xiàn)分類選擇組件

 //先在你需要的頁(yè)面中引入,第一個(gè)是彈出層,第二個(gè)是選擇的
 import { Popup } from "vant";
 import { TreeSelect } from "vant";

代碼部分:

 <van-popup v-model="policeShow" position="top" :overlay="true">
  <van-tree-select
  :items="items"
  :active-id.sync="items.activeId"
  :main-active-index.sync="items.activeId"
  @click-nav="onNavClick" 
  >
  <template slot="content" >
   <ul class="right-content">
   <li v-for="(item,index) in policeList" :key="index"  :class="{active:policeCode==item.policeCode}" @click="onItemClick(item.policeName,item.policeCode)"> {{item.policeName}} </li>
   </ul>
  </template>
  </van-tree-select>
  <div class="btn" @click="onPoliceClick">完成</div>
 </van-popup>

現(xiàn)在我來(lái)解析我的業(yè)務(wù)邏輯,希望對(duì)你能有幫助:

1.首先:items,是個(gè)數(shù)組,我們需要給它傳個(gè)數(shù)組過(guò)去,用來(lái)展示左側(cè)的數(shù)據(jù)

//這是我的后臺(tái)傳過(guò)來(lái)的數(shù)據(jù),我將這個(gè)數(shù)據(jù)加到items里面去,左側(cè)的數(shù)據(jù)將就展示出來(lái)了,注意這里是循環(huán)的數(shù)據(jù),我為了簡(jiǎn)單這么寫了,還有items中的key盡量用text,要不會(huì)渲染不上,在picker上面是有個(gè)value-key去改變的,這一會(huì)兒在下一篇文章中講
{
 "code": 200,
 "message": "success",
 "data": [
  {
   "substationCode": "1101010000",
   "substationName": "東城區(qū)分局"
  },
  {
   "substationCode": "100002",
   "substationName": "昌平區(qū)分局"
  },
  {
   "substationCode": "100003",
   "substationName": "海淀區(qū)分局"
  },
  {
   "substationCode": "100001003",
   "substationName": "海淀區(qū)分局"
  },
  {
   "substationCode": "1010101",
   "substationName": "昌平區(qū)分局"
  },
  {
   "substationCode": "1010101\t",
   "substationName": "111"
  },
  {
   "substationCode": "1000021",
   "substationName": "測(cè)試重復(fù)分局"
  },
  {
   "substationCode": "12223",
   "substationName": "河北分局"
  }
 ]
}
  this.items.push({
    activeId:substationCode,
    text:substationName
  })

2.我們要根據(jù)左側(cè)的數(shù)據(jù)去渲染右側(cè)的數(shù)據(jù)(右側(cè)的數(shù)據(jù)是自定義的,所以你自己加事件就行)

 @click-nav代碼部分已經(jīng)寫了
 onNavClick(index) {
  console.log(index) 
  let substationCode = this.items[index].activeId //這是我們通過(guò)index獲取到當(dāng)前點(diǎn)擊的值
  this.requestPoliceList(substationCode) //這是請(qǐng)求右側(cè)列表的請(qǐng)求通過(guò)activeId去請(qǐng)求。
 },

總結(jié):

1.渲染左側(cè),將后臺(tái)給你的值push到items里面(注意只能使用text)

2.通過(guò)@click-nav獲取當(dāng)前的index并拿到id

3.通過(guò)id渲染右側(cè)的數(shù)據(jù)

補(bǔ)充知識(shí):vue-treeselect的自定義部分說(shuō)明和使用心得

在vue中出現(xiàn)了各種各樣的框架,vue-treeselect就是vue的樹選擇;就是基于vue的多選組件

在平常的情況下一般我把vue-treeselect再次封裝一遍為自己業(yè)務(wù)提供便利

當(dāng)然它的功能還是有很多的例如:?jiǎn)芜x、多選、模糊搜索、清除等等

不說(shuō)廢話了直接看代碼吧

vue使用vant TreeSelect實(shí)現(xiàn)分類選擇組件

咱們來(lái)一個(gè)一個(gè)說(shuō)明一下吧

首先命名一個(gè)樹的名字,到時(shí)候組件調(diào)用的時(shí)候好調(diào)用也就是name

之后是透?jìng)鞯膮?shù)和數(shù)據(jù)配置props組件肯定是子的嘛,props中的東西都是可以從父級(jí)里面透?jìng)鬟^(guò)來(lái)的

template就是我所需要的的vue-treeselect的組件模板

data就是我子組件的數(shù)據(jù)參數(shù)

當(dāng)然在這個(gè)TgElTreeSelect你還可以放入methods、vue中的生命周期、計(jì)算屬性、偵聽器等等

props中的透?jìng)鞯膮?shù)

vue使用vant TreeSelect實(shí)現(xiàn)分類選擇組件

props里面可以有數(shù)據(jù)value也就是初始化的數(shù)據(jù),dataList就是你的接口數(shù)據(jù),接下來(lái)的就是你選擇之后渲染的屬性和上傳的屬性了,說(shuō)的直白一點(diǎn)就是下拉中的label和value當(dāng)然上面對(duì)應(yīng)的就是我的labelField和selectField,之后的屬性就是樹形折疊屬性,

defaultExpandLevel就是從哪一級(jí)來(lái)時(shí)折疊展開,

defaultExpandAll就是全部展開或者折疊

multiple是否為多選

disabled這個(gè)就是可選擇與不可選擇

validateEvent驗(yàn)證必填與不必填的屬性

clearable是否有清除的屬性

當(dāng)然我也把我完整的代碼粘出來(lái)

vue使用vant TreeSelect實(shí)現(xiàn)分類選擇組件

vue使用vant TreeSelect實(shí)現(xiàn)分類選擇組件

vue使用vant TreeSelect實(shí)現(xiàn)分類選擇組件

當(dāng)然給一個(gè)說(shuō)明唄在這里我使用了requirejs通過(guò)define的屬性也就是所謂的AMD來(lái)再次封裝這個(gè)組件,首頁(yè)先npm安裝vue-treeselect

npm install --save @riophae/vue-treeselect

Vue.component('treeselect', VueTreeselect.Treeselect)

上面的這句代碼就是下載完之后引入treeselect

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI