好久沒有更新文章啦~~記錄下今天弄的一個小功能。html
先上圖:數組
第1列改變的時候,第2列也隨着改變,而且比第1列大1k。微信
這裏用到了微信的picker 組件,對於不太熟練這個組件的小夥伴能夠先看下官方文檔。優化
主要用到了多列選擇器,以下圖:this
1.在onLoad裏面生成一個二維數組,形式以下:spa
[['1K','2K','3K','4K','5K','6K','7K','8K'...],['1K','2K','3K','4K','5K','6K','7K','8K'...]]code
onLoad: function(options) { const _this = this; let salaryStart = [], salaryEnd = [], salaryArray = []; for (let i = 1; i < 100; i++) { salaryStart.push(`${i}k`); salaryEnd.push(`${i+1}k`) } salaryArray.push(salaryStart); salaryArray.push(salaryEnd); _this.setData({ salaryArray: salaryArray }) },
2.data數據設置以下:component
data:{ salaryArray: [], salaryIndex: [0, 0], }
3.在wxml綁定這些數據xml
<picker mode="multiSelector" bindchange="bindMultiPickerChange" bindcolumnchange="bindMultiPickerColumnChange" value="{{salaryIndex}}" range="{{salaryArray}}"> <view class="picker"> {{salaryArray[0][salaryIndex[0]]}}-{{salaryArray[1][salaryIndex[1]]}} </view> </picker>
4.定義bindchange 和 bindcolumnchange方法htm
//肯定時觸發該事件
bindMultiPickerChange(e) { this.setData({ salaryIndex: e.detail.value }) },
//滑動列時觸發該事件 bindMultiPickerColumnChange(e) { let currentColunm = e.detail.column; let currentClounmIndex = e.detail.value; let salaryArray = this.data.salaryArray console.log('修改的列爲', currentColunm, ',值爲', currentClounmIndex); let data = { salaryArray: this.data.salaryArray, salaryIndex: this.data.salaryIndex } data.salaryIndex[currentColunm] = currentClounmIndex data.salaryIndex[1] = currentClounmIndex; this.setData(data) },
方法說明:
1.currentColunm 表示當前滑動的列數
2.currentClounmIndex 表示選擇某一列的值的索引
以下圖:
讓第2列的可選擇區間永遠大於第1列。
各位小夥伴若是有更合適的解決方案,望不吝賜教~~