在項(xiàng)目中,要求微信小程序的地區(qū)可以選擇偽五級(jí)聯(lián)動(dòng)
展示如下
這里采用的是自定義多列選擇器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)前選擇:全國(guó) </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個(gè)數(shù)組(省市縣鎮(zhèn)),multiIndex是4個(gè)數(shù)組對(duì)應(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ù)返回類(lèi)型
鎮(zhèn)返回?cái)?shù)據(jù)
內(nèi)容已講述完畢,歡迎大家關(guān)注后續(xù)更多精彩內(nèi)容。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/128281.html
摘要:有的文件不是必須的,可以參考微信小程序官方文檔。應(yīng)用程序和頁(yè)面之間的關(guān)系微信小程序允許縱向級(jí)數(shù)最高五級(jí),后面會(huì)介紹導(dǎo)航組件,設(shè)置幾級(jí)頁(yè)面以及之間的跳轉(zhuǎn)。基本框架: .wxml :頁(yè)面骨架 .wxss :頁(yè)面樣式 .js :頁(yè)面邏輯? ? 描述一些行為 .json :頁(yè)面配置 創(chuàng)建一個(gè)小程序之后,app.js,app.json,app.wxss是必須的,而且名字也不能隨意更改,這些是作用于AP...
摘要:另外因?yàn)橐蕾嚕赡艹霈F(xiàn)讀寫(xiě)失敗,從面造成通信失敗注意點(diǎn)頁(yè)面初始化時(shí)也會(huì)觸發(fā)方式二小程序同方式一一樣,利用激活方法,通過(guò)讀寫(xiě)小程序完成數(shù)據(jù)傳遞清隊(duì)上次通信數(shù)據(jù)優(yōu)點(diǎn)實(shí)現(xiàn)簡(jiǎn)單,實(shí)現(xiàn)理解。 微信小程序頁(yè)面間通的5種方式 PageModel(頁(yè)面模型)對(duì)小程序而言是很重要的一個(gè)概念,從app.json中也可以看到,小程序就是由一個(gè)個(gè)頁(yè)面組成的。 showImg(https://segmentf...
摘要:最近很郁悶,一個(gè)女粉絲找我要開(kāi)發(fā)一個(gè)系統(tǒng)。但是后來(lái),越扯越嚴(yán)重上升到塊要開(kāi)發(fā)一個(gè)知乎的高度。主要實(shí)現(xiàn)了仿知乎微信小程序的文件管理功能。點(diǎn)擊下面,回復(fù)小程序 最近很郁悶,一個(gè)女粉絲找我要開(kāi)發(fā)一個(gè)系統(tǒng)。說(shuō)是很著急。 ? 但是費(fèi)用不高,說(shuō)自己沒(méi)錢(qián)。 ? 我平時(shí)事也很多,又不是很想接。 ? 說(shuō)了一大...
摘要:準(zhǔn)備工作服務(wù)器最好使用服務(wù)器,小白推薦安裝寶塔面板。備案域名小程序賬號(hào)建議注冊(cè)企業(yè)賬號(hào),可以使用已認(rèn)證的公眾號(hào)快速創(chuàng)建。七牛賬號(hào)使用,加快網(wǎng)站訪問(wèn)速度。如需使用小程序發(fā)帖,也會(huì)用到。注意不要使用以下的。 showImg(https://segmentfault.com/img/bVUUeU?w=600&h=280); 準(zhǔn)備工作 1服務(wù)器 最好使用Linux服務(wù)器,小白推薦安裝寶塔面板。...
摘要:注拍照功能在某些機(jī)型上還有閃退現(xiàn)象,希望微信官方可以盡快完善。這涉及到函數(shù),這是微信小程序內(nèi)置的,用來(lái)上傳一個(gè)文件,有幾個(gè)點(diǎn)要說(shuō)下綠色框要上傳文件資源的路徑,也就是我們相冊(cè)里選擇的圖片路徑。 我們喜歡小程序的原因之一就是它提供了更多和手機(jī)系統(tǒng)交互的接口,比如今天要說(shuō)的這個(gè)從相冊(cè)選擇 / 拍照功能。注:拍照功能在某些機(jī)型上還有閃退現(xiàn)象,希望微信官方可以盡快完善。 在上一篇中我們搞定了相冊(cè)...
閱讀 561·2023-03-27 18:33
閱讀 750·2023-03-26 17:27
閱讀 646·2023-03-26 17:14
閱讀 603·2023-03-17 21:13
閱讀 537·2023-03-17 08:28
閱讀 1823·2023-02-27 22:32
閱讀 1315·2023-02-27 22:27
閱讀 2199·2023-01-20 08:28