国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 課堂 > 小程序 > 正文

mpvue微信小程序多列選擇器用法之省份城市選擇的實現

2020-03-21 16:00:55
字體:
來源:轉載
供稿:網友

前言

微信小程序默認給我們提供了一個省市區的picker選擇器,只需將mode設置為region即可

<picker mode="region" bindchange="bindRegionChange" value="{{region}}" custom-item="{{customItem}}" >

因為小程序默認提供的省市區選擇器只能保存名稱,不能保存id,而且我也不需要選擇三級城市,所以這里打算通過mode="multiSelector"來實現省份城市的選擇

城市數據json格式

關于省份城市數據的獲取,這里我通過接口去獲取數據,返回的json格式為

{ "code": 0, "msg": "success", "data": [ {  "id": 2,  "name": "北京",  "children": [  {   "id": 36,   "name": "北京市"  }  ] } ]}

在我們保存提交的時候只需要保存省份和城市的id即可

picker多列選擇器的用法

<picker  mode="multiSelector"  @change="bindCityChange"  @columnchange="bindCityColumnChange"  :value="multiIndex"  :range="multiArray"  range-key="name" >  <view class="picker">選擇城市{{userInfo.province.name}},{{userInfo.city.name}}</view> </picker>

設置picker mode屬性為multiSelector

 mode="multiSelector"

1、這里需要注意的是,在mpvue中無法直接使用bindchange和bindcolumnchange,而是使用@change和@columnchange這種方式

2、value是一個數組,例如我們有兩列

[["北京", "湖南"], ["長沙", "永州"]]

3、range也是一個數組,指定的是value值的選中索引值,下標從0開始,如[0,0]

4、如果我們的數據是一個二維對象數組,我們可以通過使用range-key來指定Object 中 key 的值作為選擇器顯示內容

5、當我們確認選中之后會觸發@change事件

// 城市選擇 獲取選中的值 [0,0] 這里需要注意的是獲取值的方式在mpvue中通過e.mp.detail.value而不是e.detail.value bindCityChange(e) { // 選中的值索引 console.log(e.mp.detail.value[0], e.mp.detail.value[1]); // 選中的省份和城市數據 console.log( this.multiArray[0][e.mp.detail.value[0]], this.multiArray[1][e.mp.detail.value[1]] ); this.userInfo.province = this.multiArray[0][e.mp.detail.value[0]]; this.userInfo.city = this.multiArray[1][e.mp.detail.value[1]]; },

6、在我們滾動每一列的值的時候會觸發@columnchange事件

7、通過e.mp.detail.columne.mp.detail.value可以獲取到修改列對應的值

console.log( "修改的列為", e.mp.detail.column, ",值為", e.mp.detail.value );

通過獲取到修改的數據更新multiIndex的值

// 監聽滾動事件 滾動第一列 修改第二列數據 bindCityColumnChange(e) { // 更新multiIndex的值 this.multiIndex[e.mp.detail.column] = e.mp.detail.value; //加載對應省份下城市數據 switch (e.mp.detail.column) { case 0:  // this.multiArray[1] = this.cityList[e.mp.detail.value].children;  this.multiArray = [  this.cityList,  this.cityList[e.mp.detail.value].children  ];  break; } },
data() { return {multiIndex: [0, 0], multiArray: [], } }

參考閱讀

  • https://developers.weixin.qq.com/miniprogram/dev/component/picker.html

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 津市市| 兰西县| 永安市| 延津县| 高青县| 黄平县| 唐河县| 焉耆| 扬中市| 杭锦后旗| 盈江县| 迁西县| 介休市| 修文县| 娱乐| 乃东县| 保康县| 秦皇岛市| 梨树县| 临西县| 武隆县| 舒城县| 浦江县| 北流市| 巴马| 长兴县| 辽宁省| 天门市| 望奎县| 兴隆县| 黄浦区| 华坪县| 贵州省| 临清市| 裕民县| 安康市| 泾阳县| 和林格尔县| 河北区| 山东| 承德县|