微信小程序?qū)崿F(xiàn)地區(qū)選擇偽五級聯(lián)動
本文實(shí)例為大家分享了微信小程序?qū)崿F(xiàn)地區(qū)選擇偽五級聯(lián)動的具體代碼,供大家參考,具體內(nèi)容如下
效果圖
這里采用的是自定義多列選擇器picker mode="multiSelector"
<view class="section"> ? ? <view class="section__title">多列選擇器</view> ? ? <picker mode="multiSelector" bindchange="bindMultiPickerChange" bindcolumnchange="bindMultiPickerColumnChange" value="{{multiIndex}}" range="{{multiArray}}"> ? ? ? <view wx:if="{{multiIndex[0]==0}}" class="picker" style='font-size:24rpx'> ? ? ? ? 當(dāng)前選擇:全國 ? ? ? </view> ? ? ? <view wx:elif="{{multiIndex[1]==0}}" class="picker" style='font-size:24rpx'> ? ? ? ? 當(dāng)前選擇:{{multiArray[0][multiIndex[0]]}} ? ? ? </view> ? ? ? <view wx:elif="{{multiIndex[2]==0}}" class="picker" style='font-size:24rpx'> ? ? ? ? 當(dāng)前選擇:{{multiArray[0][multiIndex[0]]}}-{{multiArray[1][multiIndex[1]]}} ? ? ? </view> ? ? ? <view wx:elif="{{multiIndex[3]==0}}" class="picker" style='font-size:24rpx'> ? ? ? ? 當(dāng)前選擇:{{multiArray[0][multiIndex[0]]}}-{{multiArray[1][multiIndex[1]]}}-{{multiArray[2][multiIndex[2]]}} ? ? ? </view> ? ? ? <view wx:else class="picker" style='font-size:24rpx'> ? ? ? ? 當(dāng)前選擇:{{multiArray[0][multiIndex[0]]}}-{{multiArray[1][multiIndex[1]]}}-{{multiArray[2][multiIndex[2]]}}-{{multiArray[3][multiIndex[3]]}} ? ? ? </view> ? ? </picker> </view>
multiArray包含4個數(shù)組(省市縣鎮(zhèn)),multiIndex是4個數(shù)組對應(yīng)選中下標(biāo)
onLoad: async function (options) { ?? ?let chinaData = await getCountryList() ?? ?chinaData.unshift({city: [],code: 0,name: "全部"}) ?? ?for(let one of chinaData){ ?? ??? ?one.city.unshift({county: [],code: 0,name: "全部"}) ?? ??? ?for(let two of one.city){ ?? ??? ??? ?two.county.unshift({code: 0,name: "全部"}) ?? ??? ?} ?? ?} ? ? this.data.chinaData = chinaData; ? ? let sheng = []; // ?設(shè)置省數(shù)組 ? ? for(let i = 0; i < chinaData.length; i++) { ? ? ? ?sheng.push(chinaData[i].name); ? ? } ? ? this.setData({ ? ? ? ?"multiArray[0]": sheng ? ? }) ? ? this.getCity(); // 得到市 }, ? ? bindMultiPickerChange: function(e) { ?? ??? ?console.log(e); ?? ?}, ?? ?bindMultiPickerColumnChange: function(e) { ?? ??? ?let move = e.detail; ?? ??? ?let index = move.column; ?? ??? ?let value = move.value; ?? ??? ?if (index == 0) { ?? ??? ? ?this.setData({ ?? ??? ??? ?multiIndex: [value,0,0,0] ?? ??? ? ?}) ?? ??? ? ?this.getCity(); ?? ??? ?} ?? ??? ?if (index == 1) { ?? ??? ? ?this.setData({ ?? ??? ??? ?"multiIndex[1]": value, ?? ??? ??? ?"multiIndex[2]": 0, ?? ??? ??? ?"multiIndex[3]": 0 ?? ??? ? ?}) ?? ??? ? ?this.getXian(); ?? ??? ?} ?? ??? ?if (index == 2) { ?? ??? ? ?this.setData({ ?? ??? ??? ?"multiIndex[2]": value, ?? ??? ??? ?"multiIndex[3]": 0, ?? ?? ?? ??? ? ?}) ?? ??? ? ?this.getZhen(); ?? ??? ?} ?? ??? ?if (index == 3) { ?? ??? ? ?this.setData({ ?? ??? ??? ?"multiIndex[3]": value ?? ??? ? ?}) ?? ??? ? ?this.getZhen(); ?? ??? ?} ?? ?}, ?? ?getCity: function() { // ?得到市 ?? ??? ?let shengNum = this.data.multiIndex[0]; ?? ??? ?let chinaData = this.data.chinaData; ?? ??? ?let cityData = chinaData[shengNum].city; ?? ??? ?let city = []; ?? ??? ?for (let i = 0; i < cityData.length; i++) { ?? ??? ? ?city.push(cityData[i].name) ?? ??? ?} ?? ??? ?this.setData({ ?? ??? ? ?"multiArray[1]": city ?? ??? ?}) ?? ??? ?this.getXian(); ?? ?}, ?? ?getXian: function(e) { // ?得到縣 ?? ??? ?let shengNum = this.data.multiIndex[0]; ?? ??? ?let cityNum = this.data.multiIndex[1]; ?? ??? ?let chinaData = this.data.chinaData; ?? ??? ?let xianData = chinaData[shengNum].city[cityNum].county; ?? ??? ?let xian = []; ?? ??? ?for (let i = 0; i < xianData.length; i++) { ?? ??? ? ?xian.push(xianData[i].name) ?? ??? ?} ?? ??? ?this.setData({ ?? ??? ? ?"multiArray[2]": xian ?? ??? ?}) ?? ??? ?this.getZhen(); ?? ?}, ?? ?async getZhen(){// ?得到鎮(zhèn) ?? ??? ?let shengNum = this.data.multiIndex[0]; ?? ??? ?let cityNum = this.data.multiIndex[1]; ?? ??? ?let xianNum = this.data.multiIndex[2]; ?? ??? ?let chinaData = this.data.chinaData; ?? ??? ?let zhen = []; ?? ??? ?if(chinaData[shengNum].city[cityNum].county[xianNum].code == 0){ ?? ??? ??? ?this.setData({ ?? ??? ??? ??? ?"multiArray[3]" : ["全部"] ?? ??? ??? ?}) ?? ??? ?}else{ ? ? ? ? ? ? //這里需要傳縣的code值獲取鎮(zhèn)的數(shù)據(jù) ?? ??? ??? ?let res = ?await getTownByCounty(chinaData[shengNum].city[cityNum].county[xianNum].code) ?? ??? ??? ?let zhenData = JSON.parse(res.data.data.json) ?? ??? ??? ?zhenData.unshift({code: 0,name: "全部"}) ?? ??? ??? ?for (let i = 0; i < zhenData.length; i++) { ?? ??? ??? ??? ?zhen.push(zhenData[i].name) ?? ??? ??? ?} ?? ??? ??? ?this.setData({ ?? ??? ??? ??? ?"multiArray[3]" : zhen ?? ??? ??? ?}) ?? ??? ?} ?? ?}
省市縣數(shù)據(jù)返回類型
鎮(zhèn)返回數(shù)據(jù)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
學(xué)習(xí)JavaScript圖片預(yù)加載模塊
這篇文章主要介紹了js實(shí)現(xiàn)圖片預(yù)加載的方法,內(nèi)容很詳細(xì),帶領(lǐng)大家全面認(rèn)識js圖片預(yù)加載模塊,感興趣的小伙伴們可以參考一下2016-11-11js實(shí)現(xiàn)拉伸拖動iframe的具體代碼
這篇文章介紹了js實(shí)現(xiàn)拉伸拖動iframe的具體代碼,有需要的朋友可以參考一下2013-08-08把json格式的字符串轉(zhuǎn)換成javascript對象或數(shù)組的方法總結(jié)
下面小編就為大家?guī)硪黄裫son格式的字符串轉(zhuǎn)換成javascript對象或數(shù)組的方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11JS簡單實(shí)現(xiàn)無縫滾動效果實(shí)例
這篇文章主要介紹了JS簡單實(shí)現(xiàn)無縫滾動效果,結(jié)合完整實(shí)例形式分析了javascript實(shí)現(xiàn)圖片無縫滾動效果的實(shí)現(xiàn)技巧,涉及javascript結(jié)合時間函數(shù)定時觸發(fā)動態(tài)修改頁面元素屬性的相關(guān)操作方法,需要的朋友可以參考下2016-08-08JavaScript中的location、history、navigator對象實(shí)例介紹
這篇文章主要介紹了JavaScript中的location、history、navigator對象實(shí)例介紹,需要的朋友可以參考下2023-05-05