vant IndexBar實現(xiàn)的城市列表的示例代碼
在開發(fā)中有個需求是一個選擇城市的列表,看了看做成三級聯(lián)動好像不是特別方便 還是做成一整頁可以按導(dǎo)航選取的就可以了
話不多說開始上碼
我用的是vant這個ui框架中的IndexBar組件 其實這個組件已經(jīng)把需要的都弄好了 我們只要處理數(shù)據(jù)就好了
首先需要引入IndexBar組件 這個就不再贅述了 官網(wǎng)寫的很清楚
點擊索引欄時,會自動跳轉(zhuǎn)到對應(yīng)的IndexAnchor錨點位置
<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)部分 我的思路是按每個城市名稱的首個字母排序
然后來看看我的數(shù)據(jù)
{
"id": 101,
"name": "北京市",
"pid": 1,
"code": 0
},
{
"id": 10101,
"name": "天津市",
"pid": 10001,
"code": 0
},
{
"id": 20101,
"name": "石家莊市",
"pid": 20001,
"code": 130100
}
因為之前的數(shù)據(jù)很亂 所以我讓后臺老哥重新寫了一個只包含市級城市的列表 這樣就非常好處理了
第一步先把城市的名稱取出
一個簡單的循環(huán)就OK
let cityNameList = []
for(let p in cityList){
cityNameList.push(cityList[p].name)
}
ok現(xiàn)在我們就把城市的名稱存到了cityNameList中了
下面一步就是關(guān)鍵的一步了
直接將數(shù)組的首字母取出來并按照A-Z排序
這里用到了一個插件pinyin 用它來將中文的首字母取出來
首先安裝
npm install js-pinyin
然后我是在mian.js中引入的
import pinyin from 'js-pinyin'
然后在你的業(yè)務(wù)頁面配置
let pinyin = require('js-pinyin')
pinyin.setOptions({checkPolyphone:false,charCase:0})
然后就可以使用了
直接一個循環(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中定義的一個數(shù)組,用來存儲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組件中寫一個循環(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>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 詳解vantUI框架在vue項目中的應(yīng)用踩坑
- 在Vant的基礎(chǔ)上實現(xiàn)添加表單驗證框架的方法示例
- Vant的安裝和配合引入Vue.js項目里的方法步驟
- 移動端 Vue+Vant 的Uploader 實現(xiàn)上傳、壓縮、旋轉(zhuǎn)圖片功能
- 詳解VUE項目中安裝和使用vant組件
- Mpvue中使用Vant Weapp組件庫的方法步驟
- 詳解mpvue中使用vant時需要注意的onChange事件的坑
- vue vantUI實現(xiàn)文件(圖片、文檔、視頻、音頻)上傳(多文件)
- mpvue+vant app搭建微信小程序的方法步驟
- Vue 用Vant實現(xiàn)時間選擇器的示例代碼
相關(guān)文章
vue實現(xiàn)某元素吸頂或固定位置顯示(監(jiān)聽滾動事件)
這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)某元素吸頂或固定位置顯示,監(jiān)聽滾動事件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Vue按照順序?qū)崿F(xiàn)多級彈窗效果 附Demo
這篇文章主要介紹了Vue按照順序?qū)崿F(xiàn)多級彈窗效果 附Demo,通過實例代碼介紹了單個彈窗和多級彈窗的實現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧2024-05-05
Vue3中watch監(jiān)聽器及源碼學(xué)習(xí)
本文主要介紹了Vue3中watch監(jiān)聽器及源碼學(xué)習(xí),Watch偵聽器在Vue3中特性進行了一些改變和優(yōu)化,下面來詳解的介紹一下基本使用,具有一定的參考價值,感興趣的可以了解一下2024-01-01
Vue 中 a標(biāo)簽上href無法跳轉(zhuǎn)的解決方式
今天小編大家分享一篇Vue 中 a標(biāo)簽上href無法跳轉(zhuǎn)的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
Vue實現(xiàn)移除數(shù)組中特定元素的方法小結(jié)
這篇文章主要介紹了Vue如何優(yōu)雅地移除數(shù)組中的特定元素,文中介紹了單個去除和批量去除的操作方法,并通過代碼示例講解的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下2024-03-03

