用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,登录网站

小程序社区 首页 资讯/观点 查看内容

北京快3app下载:mpvue微信小程序多列选择器用法:实现省份城市选择

北京快三最新开奖结果 www.6z8dk.cn Rolan 2019-3-7 00:01

前言微信小程序默认给我们提供了一个省市区的picker选择器,只需将mode设置为region即可picker mode="region" bindchange="bindRegionChange" value="{{region}}" custom-item="{{customItem}}" 因为小程序默认提供 ...

前言

微信北京快三最新开奖结果默认给我们提供了一个省市区的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.column和e.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://www.cnblogs.com/Oopa/p/7266976.html
https://developers.weixin.qq.com/miniprogram/dev/component/picker.html

分享至 : QQ空间
收藏
原作者: fozero 来自: cnblogs
  • 法制日报:别让世界杯激情冲淡守法意识 2019-03-20
  • 这些难免只有马克思主义真理才能自救,其余的都瞎扯淡,至于他们需要从哪里讨说法,也在马克思主义真理里面了 2019-03-20
  • 董卿海霞李思思康辉撒贝宁 央视名嘴童年照谁更萌 2019-03-19
  • 800万尾鱼苗放流天津蓟州于桥水库 2019-03-18
  • 高考生免费游景区是一种人文关怀 2019-03-18
  • 中华人民共和国英雄烈士保护法 2019-03-17
  • 这艘中国船刚干了件勾起美国加拿大敏感矛盾的事,但国内却没啥人知道… 2019-03-16
  • 马德里18家医院出现技术故障 预约资料丢失 2019-03-15
  • 咱主张不由市场发挥全部作用,是因为市场受需求引导,而需求又分正义需求和邪恶需求。 2019-03-14
  • 笑博士没有经历计划经济时代!其对计划经济的批评,是从市场派抄袭来的。实践证明,社会主义与计划经济是兼容的。正是由于中国中途放弃计划经济,盲目迷信市场经济,使得中 2019-03-13
  • 叙利亚礼俗(礼仪漫谈) 2019-03-13
  • 2018网络中国节·端午 2019-03-12
  • 世界杯VAR再度立功 助瑞典1 2019-03-12
  • 没考上?没关系。其它学校也能培养建设国家的人才,清华只是名气大点。 2019-03-11
  • 您访问的页面找不回来了 2019-03-11
  • 709| 524| 25| 772| 397| 228| 782| 31| 367| 888|