最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當前位置: 首頁 - 科技 - 知識百科 - 正文

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

來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:00:17
文檔

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

mpvue微信小程序多列選擇器用法之省份城市選擇的實現(xiàn):前言 微信小程序默認給我們提供了一個省市區(qū)的picker選擇器,只需將mode設(shè)置為region即可 <picker mode=region bindchange=bindRegionChange value={{region}} custom-item={{customItem}} > 因為
推薦度:
導讀mpvue微信小程序多列選擇器用法之省份城市選擇的實現(xiàn):前言 微信小程序默認給我們提供了一個省市區(qū)的picker選擇器,只需將mode設(shè)置為region即可 <picker mode=region bindchange=bindRegionChange value={{region}} custom-item={{customItem}} > 因為

前言

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

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

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

城市數(shù)據(jù)json格式

關(guān)于省份城市數(shù)據(jù)的獲取,這里我通過接口去獲取數(shù)據(jù),返回的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>

設(shè)置picker mode屬性為multiSelector

 mode="multiSelector"

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

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

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

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

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

5、當我們確認選中之后會觸發(fā)@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]);
 // 選中的省份和城市數(shù)據(jù)
 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、在我們滾動每一列的值的時候會觸發(fā)@columnchange事件

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

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

通過獲取到修改的數(shù)據(jù)更新multiIndex的值

// 監(jiān)聽滾動事件 滾動第一列 修改第二列數(shù)據(jù)
 bindCityColumnChange(e) {
 // 更新multiIndex的值
 this.multiIndex[e.mp.detail.column] = e.mp.detail.value;
 //加載對應省份下城市數(shù)據(jù)
 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://www.gxlcms.com/article/121309.htm
  • https://developers.weixin.qq.com/miniprogram/dev/component/picker.html
  • 總結(jié)

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

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

    mpvue微信小程序多列選擇器用法之省份城市選擇的實現(xiàn):前言 微信小程序默認給我們提供了一個省市區(qū)的picker選擇器,只需將mode設(shè)置為region即可 <picker mode=region bindchange=bindRegionChange value={{region}} custom-item={{customItem}} > 因為
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top