vant IndexBar實(shí)現(xiàn)的城市列表的示例代碼
在開發(fā)中有個(gè)需求是一個(gè)選擇城市的列表,看了看做成三級(jí)聯(lián)動(dòng)好像不是特別方便 還是做成一整頁(yè)可以按導(dǎo)航選取的就可以了
話不多說(shuō)開始上碼
我用的是vant這個(gè)ui框架中的IndexBar組件 其實(shí)這個(gè)組件已經(jīng)把需要的都弄好了 我們只要處理數(shù)據(jù)就好了
首先需要引入IndexBar組件 這個(gè)就不再贅述了 官網(wǎng)寫的很清楚
點(diǎn)擊索引欄時(shí),會(huì)自動(dòng)跳轉(zhuǎn)到對(duì)應(yīng)的IndexAnchor錨點(diǎn)位置
<van-index-bar> <van-index-anchor index="A" /> <van-cell title="文本" /> <van-cell title="文本" /> <van-cell title="文本" /> <van-index-anchor index="B" /> <van-cell title="文本" /> <van-cell title="文本" /> <van-cell title="文本" /> ... </van-index-bar>
這是vant官方文檔IndexBar的基本用法文檔
IndexAnchor默認(rèn)是A-Z這里我們不用去自定義
循環(huán)部分 我的思路是按每個(gè)城市名稱的首個(gè)字母排序
然后來(lái)看看我的數(shù)據(jù)
{ "id": 101, "name": "北京市", "pid": 1, "code": 0 }, { "id": 10101, "name": "天津市", "pid": 10001, "code": 0 }, { "id": 20101, "name": "石家莊市", "pid": 20001, "code": 130100 }
因?yàn)橹暗臄?shù)據(jù)很亂 所以我讓后臺(tái)老哥重新寫了一個(gè)只包含市級(jí)城市的列表 這樣就非常好處理了
第一步先把城市的名稱取出
一個(gè)簡(jiǎn)單的循環(huán)就OK
let cityNameList = [] for(let p in cityList){ cityNameList.push(cityList[p].name) }
ok現(xiàn)在我們就把城市的名稱存到了cityNameList中了
下面一步就是關(guān)鍵的一步了
直接將數(shù)組的首字母取出來(lái)并按照A-Z排序
這里用到了一個(gè)插件pinyin 用它來(lái)將中文的首字母取出來(lái)
首先安裝
npm install js-pinyin
然后我是在mian.js中引入的
import pinyin from 'js-pinyin'
然后在你的業(yè)務(wù)頁(yè)面配置
let pinyin = require('js-pinyin') pinyin.setOptions({checkPolyphone:false,charCase:0})
然后就可以使用了
直接一個(gè)循環(huán)達(dá)到我們的效果
let firstName = {}; this.FirstPin.forEach((item)=>{ firstName[item] = []; cityNameList.forEach((el)=>{ let first = pinyin.getFullChars(el).substring(0,1); if( first == item ){ firstName[item].push(el) } }) })
這里的FirstPin是在data中定義的一個(gè)數(shù)組,用來(lái)存儲(chǔ)A-Z
FirstPin: ["A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "W", "X", "Y", "Z"],
然后我的firstName的格式是這樣的
firName:{ A:["阿拉善盟","鞍山市"] }
最后在InderBar組件中寫一個(gè)循環(huán)就可以了
<van-index-bar class="indexBar" :sticky="false" highlight-color="#fb6463"> <van-index-anchor v-for="(item,index) in firstName" :key="index" :index="index"> <span class="indexWord">{{index}}</span> <van-cell @click="chooseCity(citem)" v-for="(citem,cindex) in item" :key="cindex" :title="citem"/> </van-index-anchor> </van-index-bar>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 詳解vantUI框架在vue項(xiàng)目中的應(yīng)用踩坑
- 在Vant的基礎(chǔ)上實(shí)現(xiàn)添加表單驗(yàn)證框架的方法示例
- Vant的安裝和配合引入Vue.js項(xiàng)目里的方法步驟
- 移動(dòng)端 Vue+Vant 的Uploader 實(shí)現(xiàn)上傳、壓縮、旋轉(zhuǎn)圖片功能
- 詳解VUE項(xiàng)目中安裝和使用vant組件
- Mpvue中使用Vant Weapp組件庫(kù)的方法步驟
- 詳解mpvue中使用vant時(shí)需要注意的onChange事件的坑
- vue vantUI實(shí)現(xiàn)文件(圖片、文檔、視頻、音頻)上傳(多文件)
- mpvue+vant app搭建微信小程序的方法步驟
- Vue 用Vant實(shí)現(xiàn)時(shí)間選擇器的示例代碼
相關(guān)文章
VUE登錄注冊(cè)頁(yè)面完整代碼(直接復(fù)制)
這篇文章主要給大家介紹了關(guān)于VUE登錄注冊(cè)頁(yè)面的相關(guān)資料,在Vue中可以使用組件來(lái)構(gòu)建登錄注冊(cè)頁(yè)面,文中通過(guò)圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12Vue聲明式導(dǎo)航與編程式導(dǎo)航及導(dǎo)航守衛(wèi)和axios攔截器全面詳細(xì)講解
這篇文章主要介紹了Vue聲明式導(dǎo)航與編程式導(dǎo)航及導(dǎo)航守衛(wèi)和axios攔截器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01Vue2使用cube-ui?實(shí)現(xiàn)搜索過(guò)濾、高亮功能
cube-ui?是基于?Vue.js?實(shí)現(xiàn)的精致移動(dòng)端組件庫(kù),由于很長(zhǎng)一段時(shí)間沒(méi)有學(xué)習(xí)cube-ui?的功能實(shí)現(xiàn)示例代碼了,今天通過(guò)本文給大家介紹下Vue2使用cube-ui?實(shí)現(xiàn)搜索過(guò)濾、高亮功能,感興趣的朋友跟隨小編一起看看吧2023-01-01關(guān)于vue的npm run dev和npm run build的區(qū)別介紹
這篇文章主要介紹了關(guān)于vue的npm run dev和npm run build的區(qū)別介紹,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Vue多層數(shù)據(jù)結(jié)構(gòu)響應(yīng)式失效,視圖更新失敗問(wèn)題
這篇文章主要介紹了Vue多層數(shù)據(jù)結(jié)構(gòu)響應(yīng)式失效,視圖更新失敗問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02Vue基于el-breadcrumb實(shí)現(xiàn)面包屑功能(操作代碼)
這篇文章主要介紹了Vue基于el-breadcrumb實(shí)現(xiàn)面包屑功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09Vue如何獲取url路由地址和參數(shù)簡(jiǎn)單示例
這篇文章主要給大家介紹了Vue如何獲取url路由地址和參數(shù)的相關(guān)資料,通過(guò)簡(jiǎn)單的代碼示例,幫助讀者快速掌握Vue路由的基本用法,需要的朋友可以參考下2023-03-03