微信小程序自定義多列選擇器使用
本文實(shí)例為大家分享了微信小程序自定義多列選擇器的具體代碼,供大家參考,具體內(nèi)容如下
項(xiàng)目需要,需要實(shí)現(xiàn)一個(gè)多列選擇器,在用戶(hù)確定之前,無(wú)論列表如何轉(zhuǎn),都不會(huì)影響已確定值的顯示,只要用戶(hù)選擇確定才會(huì)把新選擇的內(nèi)容更新到已確定的顯示值上。
目前個(gè)人思路是保存兩份,一份用來(lái)存放用戶(hù)選擇的中間值,當(dāng)用戶(hù)點(diǎn)擊確定時(shí),把中間值更新為已確認(rèn)值。如果用戶(hù)選擇取消,就把中間值更新為已確認(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ù)量刪除了部分):
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
從0到1學(xué)習(xí)JavaScript編寫(xiě)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了JavaScript編寫(xiě)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07javascript中的綁定與解綁函數(shù)應(yīng)用示例
本文為大家詳細(xì)介紹下javascript中綁定與解綁函數(shù)在Ie及Mozilla中的應(yīng)用,感興趣的各位可以參考下哈,希望對(duì)大家有所幫助2013-06-06JS實(shí)現(xiàn)帶導(dǎo)航城市列表以及輸入搜索功能
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)帶導(dǎo)航城市列表以及輸入搜索功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01JavaScript將字符串轉(zhuǎn)換為整數(shù)的方法
這篇文章主要介紹了JavaScript將字符串轉(zhuǎn)換為整數(shù)的方法,涉及javascript中parseInt函數(shù)的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04深入剖析JavaScript instanceof 運(yùn)算符
這篇文章主要介紹了深入剖析JavaScript instanceof 運(yùn)算符,ECMAScript 引入了另一個(gè) Java 運(yùn)算符 instanceof 來(lái)解決這個(gè)問(wèn)題。instanceof 運(yùn)算符與 typeof 運(yùn)算符相似,用于識(shí)別正在處理的對(duì)象的類(lèi)型。,需要的朋友可以參考下2019-06-06JavaScript常用代碼書(shū)寫(xiě)規(guī)范的超全面總結(jié)
這篇文章給大家全面總結(jié)了JavaScript常用代碼的書(shū)寫(xiě)規(guī)范,分別利用推薦和不推薦的兩種示例代碼讓大家更能直接的了解書(shū)寫(xiě)規(guī)范,其實(shí)關(guān)于javascript代碼規(guī)范我們應(yīng)該遵循古老的原則:“能做并不意味著應(yīng)該做”,好了,下面我們就來(lái)一起看看吧。2016-09-09MATLAB中fillmissing函數(shù)用法小結(jié)
這篇文章主要介紹了MATLAB中fillmissing函數(shù)用法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09淺談javascript中執(zhí)行環(huán)境(作用域)與作用域鏈
本文主要介紹了javascript中執(zhí)行環(huán)境(作用域)與作用域鏈,并在文章結(jié)尾處做出了總結(jié),感興趣的朋友可以看下2016-12-12JavaScript實(shí)現(xiàn)圖片放大鏡效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)圖片放大鏡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06動(dòng)態(tài)刷新 dorado樹(shù)的js代碼
動(dòng)態(tài)刷新 dorado樹(shù)的js代碼2009-06-06