W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
省市區(qū)三級聯(lián)動選擇,通常與彈出層組件配合使用。
通過以下方式來全局注冊組件,更多注冊方式請參考組件注冊。
import { createApp } from 'vue';
import { Area } from 'vant';
const app = createApp();
app.use(Area);
初始化省市區(qū)組件時,需要通過 ?area-list
? 屬性傳入省市區(qū)數(shù)據(jù)。
<van-area title="標題" :area-list="areaList" />
areaList 為對象結(jié)構(gòu),包含 ?province_list
?、?city_list
?、?county_list
? 三個 key。
每項以地區(qū)碼作為 key,省市區(qū)名字作為 value。地區(qū)碼為 6 位數(shù)字,前兩位代表省份,中間兩位代表城市,后兩位代表區(qū)縣,以 0 補足 6 位。比如北京的地區(qū)碼為 ?11
?,以 0 補足 6 位,為 ?110000
?。
示例數(shù)據(jù)如下:
const areaList = {
province_list: {
110000: '北京市',
120000: '天津市',
},
city_list: {
110100: '北京市',
120100: '天津市',
},
county_list: {
110101: '東城區(qū)',
110102: '西城區(qū)',
// ....
},
};
Vant 官方提供了一份默認的中國省市區(qū)數(shù)據(jù),可以通過 @vant/area-data 引入:
# 通過 npm
npm i @vant/area-data
# 通過 yarn
yarn add @vant/area-data
# 通過 pnpm
pnpm add @vant/area-data
import { areaList } from '@vant/area-data';
export default {
setup() {
return { areaList };
},
};
Tips: 中國的行政區(qū)劃每年都會有變動,如果發(fā)現(xiàn)省市區(qū)數(shù)據(jù)未及時更新,歡迎提 Pull Request 幫助我們更新。你可以在「國家統(tǒng)計局 - 全國區(qū)劃代碼」 和「民政部 - 行政區(qū)劃代碼」上查詢到最新數(shù)據(jù),請根據(jù)官方數(shù)據(jù)進行核實。
通過 ?v-model
? 綁定當前選中的地區(qū)碼。
<van-area v-model="value" title="標題" :area-list="areaList" />
import { ref } from 'vue';
export default {
setup() {
const value = ref('330302');
return { value };
},
};
可以通過 ?columns-num
? 屬性配置省市區(qū)顯示的列數(shù),默認情況下會顯示省市區(qū),當你設(shè)置為 ?2
?,則只會顯示省市選擇。
<van-area title="標題" :area-list="areaList" :columns-num="2" />
可以通過 ?columns-placeholder
? 屬性配置每一列的占位提示文字。
<van-area
title="標題"
:area-list="areaList"
:columns-placeholder="['請選擇', '請選擇', '請選擇']"
/>
參數(shù) | 說明 | 類型 | 默認值 |
---|---|---|---|
v-model | 當前選中項對應(yīng)的地區(qū)碼 | string | - |
title | 頂部欄標題 | string | - |
confirm-button-text | 確認按鈕文字 | string | 確認
|
cancel-button-text | 取消按鈕文字 | string | 取消
|
area-list | 省市區(qū)數(shù)據(jù),格式見下方 | object | - |
columns-placeholder | 列占位提示文字 | string[] | []
|
loading | 是否顯示加載狀態(tài) | boolean | false
|
readonly | 是否為只讀狀態(tài),只讀狀態(tài)下無法切換選項 | boolean | false
|
option-height | 選項高度,支持 px vw vh rem 單位,默認 px
|
number | string | 44
|
columns-num | 顯示列數(shù),3-省市區(qū),2-省市,1-省 | number | string | 3
|
visible-option-num | 可見的選項個數(shù) | number | string | 6
|
swipe-duration | 快速滑動時慣性滾動的時長,單位 ms
|
number | string | 1000
|
事件 | 說明 | 回調(diào)參數(shù) |
---|---|---|
confirm | 點擊完成按鈕時觸發(fā) | { selectedValues, selectedOptions } |
cancel | 點擊取消按鈕時觸發(fā) | { selectedValues, selectedOptions } |
change | 選項改變時觸發(fā) | { selectedValues, selectedOptions, columnIndex } |
名稱 | 說明 | 參數(shù) |
---|---|---|
toolbar v3.1.2
|
自定義整個頂部欄的內(nèi)容 | - |
title | 自定義標題內(nèi)容 | - |
confirm v3.1.2
|
自定義確認按鈕內(nèi)容 | - |
cancel v3.1.2
|
自定義取消按鈕內(nèi)容 | - |
columns-top | 自定義選項上方內(nèi)容 | - |
columns-bottom | 自定義選項下方內(nèi)容 | - |
通過 ref 可以獲取到 Area 實例并調(diào)用實例方法,詳見組件實例方法。
方法名 | 說明 | 參數(shù) | 返回值 |
---|---|---|---|
confirm | 停止慣性滾動并觸發(fā) confirm 事件 |
- | - |
getSelectedOptions | 獲取當前選中的選項 | - | PickerOption[] |
組件導(dǎo)出以下類型定義:
import type { AreaProps, AreaList, AreaInstance } from 'vant';
?AreaInstance
? 是組件實例的類型,用法如下:
import { ref } from 'vue';
import type { AreaInstance } from 'vant';
const areaRef = ref<AreaInstance>();
areaRef.value?.confirm();
參見桌面端適配。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: