在項(xiàng)目搭建過(guò)程中吃,需要實(shí)現(xiàn)一個(gè)多列選擇器,在用戶確定之前,無(wú)論列表如何轉(zhuǎn),對(duì)于已選擇的都不會(huì)有影響,只有在確定選擇內(nèi)容后才顯示值上。
思路:保存兩份,一份用來(lái)存放用戶選擇的中間值,當(dāng)用戶點(diǎn)擊確定時(shí),把中間值更新為已確認(rèn)值。如果用戶選擇取消,就把中間值更新為已確認(rèn)值。
因?yàn)槲⑿判〕绦蛑械亩嗔羞x擇器是用數(shù)組存放數(shù)據(jù),因此在拷貝中涉及到深拷貝,必須是深拷貝才能實(shí)現(xiàn)上面的設(shè)想。
因此可以下面代碼實(shí)現(xiàn)深拷貝:
var arr=JSON.parse(JSON.stringify(this.data.multiArray));
wxml:
<picker bindcancel="cancelAddr" mode="multiSelector" bindchange="bindMultiPickerChange" bindcolumnchange="bindMultiPickerColumnChange" value="{{demoIndex}}" range="{{demoArray}}"> <view class="picker"> 收貨地址:{{multiArray[0][multiIndex[0]]}}-{{multiArray[1][multiIndex[1]]}}-{{multiArray[2][multiIndex[2]]}} </view> </picker>
js:
data:{ multiArray: [ ['廣大生活區(qū)', '廣大教學(xué)區(qū)'], ['B1', 'B2', 'B3'], ['一樓', '二樓', '三樓'] ], demoArray: [ ['廣大生活區(qū)', '廣大教學(xué)區(qū)'], ['B1', 'B2', 'B3'], ['一樓', '二樓', '三樓'] ], //實(shí)際顯示值 multiIndex: [0, 0, 0], //臨時(shí)變量 demoIndex: [0, 0, 0], teach: ["文清樓", "文新樓", "文俊西樓"], life: ['B1', 'B2', 'B3'] } //修改過(guò)程中取消修改 cancelAddr() { var arr = JSON.parse(JSON.stringify(this.data.multiArray)); var index = JSON.parse(JSON.stringify(this.data.multiIndex)); this.setData({ demoArray: arr, demoIndex: index }) }, //地址選擇器改變 bindMultiPickerColumnChange(e) { var value = e.detail.value; var column = e.detail.column; var demoArray = this.data.demoArray; var demoIndex = this.data.demoIndex; if (column === 0 && value != demoIndex[0]) { if (value === 0) { demoArray[1] = this.data.life; } else { demoArray[1] = this.data.teach; } } demoIndex[column] = value; this.setData({ demoArray: demoArray, demoIndex: demoIndex }) }, //確定選中的地址 bindMultiPickerChange() { console.log("all change"); var arr = JSON.parse(JSON.stringify(this.data.demoArray)); var index = JSON.parse(JSON.stringify(this.data.demoIndex)); this.setData({ multiArray: arr, multiIndex: index }) },
效果圖(上面代碼的數(shù)據(jù)數(shù)量刪除了部分):
詳細(xì)代碼和效果展示就說(shuō)道這里,歡迎大家關(guān)注更多精彩內(nèi)容。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/128305.html
摘要:最近剛使用完成了微信小程序的開(kāi)發(fā),寫(xiě)點(diǎn)東西,做個(gè)記錄。專(zhuān)門(mén)用于外鏈跳轉(zhuǎn)但是外鏈跳轉(zhuǎn)還是個(gè)坑,微信僅能支持跳到在它那邊注冊(cè)過(guò)的的網(wǎng)址,其他還是不行,暫時(shí)沒(méi)有找到好的方式看了知乎,它的外鏈直接轉(zhuǎn)成了文本,不可點(diǎn)擊了。 最近剛使用mpvue完成了微信小程序的開(kāi)發(fā),寫(xiě)點(diǎn)東西,做個(gè)記錄。 首先依舊是兩個(gè)傳送門(mén): 微信小程序文檔:[https://developers.weixin.qq.com/...
摘要:最近剛使用完成了微信小程序的開(kāi)發(fā),寫(xiě)點(diǎn)東西,做個(gè)記錄。專(zhuān)門(mén)用于外鏈跳轉(zhuǎn)但是外鏈跳轉(zhuǎn)還是個(gè)坑,微信僅能支持跳到在它那邊注冊(cè)過(guò)的的網(wǎng)址,其他還是不行,暫時(shí)沒(méi)有找到好的方式看了知乎,它的外鏈直接轉(zhuǎn)成了文本,不可點(diǎn)擊了。 最近剛使用mpvue完成了微信小程序的開(kāi)發(fā),寫(xiě)點(diǎn)東西,做個(gè)記錄。 首先依舊是兩個(gè)傳送門(mén): 微信小程序文檔:[https://developers.weixin.qq.com/...
摘要:最近剛使用完成了微信小程序的開(kāi)發(fā),寫(xiě)點(diǎn)東西,做個(gè)記錄。專(zhuān)門(mén)用于外鏈跳轉(zhuǎn)但是外鏈跳轉(zhuǎn)還是個(gè)坑,微信僅能支持跳到在它那邊注冊(cè)過(guò)的的網(wǎng)址,其他還是不行,暫時(shí)沒(méi)有找到好的方式看了知乎,它的外鏈直接轉(zhuǎn)成了文本,不可點(diǎn)擊了。 最近剛使用mpvue完成了微信小程序的開(kāi)發(fā),寫(xiě)點(diǎn)東西,做個(gè)記錄。 首先依舊是兩個(gè)傳送門(mén): 微信小程序文檔:[https://developers.weixin.qq.com/...
在項(xiàng)目中,要求微信小程序的地區(qū)可以選擇偽五級(jí)聯(lián)動(dòng) 展示如下 這里采用的是自定義多列選擇器picker mode="multiSelector" <viewclass="section"> <viewclass="section__title">多列選擇器</view> <pick...
摘要:傳統(tǒng)的網(wǎng)頁(yè)編程采用的三劍客來(lái)實(shí)現(xiàn),在微信小程序中同樣有三劍客。觀察者模式不難實(shí)現(xiàn),重點(diǎn)是如何在微信小程序中搭配其特有的生命周期來(lái)使用。交互事件傳統(tǒng)的事件傳遞類(lèi)型有冒泡型與捕獲型,微信小程序中自然也有。 本文由作者鄒永勝授權(quán)網(wǎng)易云社區(qū)發(fā)布。 簡(jiǎn)介為了更好的展示我們即時(shí)通訊SDK強(qiáng)悍的能力,網(wǎng)易云信IM SDK微信小程序DEMO的開(kāi)發(fā)就提上了日程。用產(chǎn)品的話說(shuō)就是: 云信 IM 小程序 S...
閱讀 547·2023-03-27 18:33
閱讀 732·2023-03-26 17:27
閱讀 630·2023-03-26 17:14
閱讀 591·2023-03-17 21:13
閱讀 521·2023-03-17 08:28
閱讀 1801·2023-02-27 22:32
閱讀 1292·2023-02-27 22:27
閱讀 2178·2023-01-20 08:28