评论

如何实现一个自定义数据版省市区二级、三级联动

自定义数据版本省市区二级、三级联动

社区可能有其他的方案了,但是再分享下吧,给有需要的童鞋。

效果图:

额,这个视频转GIF因为社区上传不了大图,所以剪了一部分,具体的效果还是直接工具打开代码片段预览吧~

第一步:你的页面JSON引入该组件:

{
    "usingComponents": {
        "city-picker": "/components/cityPicker/index"
      }
}

第二步:你的页面WXML引入该组件

<city-picker visible="{{visible}}" column="2" bind:close="handleClick" bind:confirm="handleConfirm" />

第三步:你的页面JS调用

// 显示/隐藏picker选择器
handleClick() {
  this.setData( 
    visible: !this.data.visible
  })
},

// 用户选择城市后 点击确定的返回值
handleConfirm(e) {
  const { 
    detail: { 
      provinceName = '', 
      provinceId = '', 
      cityName, 
      cityId='', 
      areaName = '', 
      areaId = ''
     } = {} 
  } = e
  this.setData({
    cityId,
    cityName,
    areaId,
    areaName,
    provinceId,
    provinceName
  })
}

组件属性

属性 默认值 描述
visible false 是否显示picker选择器
column 3 显示几列,可选值:1,2,3
values [0, 0, 0] 必填,默认回填的省市区下标,可选择具体省市区后查看AppData的regionValue字段
close function 点击关闭picker弹窗
confirm function 点击选择器的确定返回值

confirm:

属性 默认值 描述
provinceName 北京市 省份名称
provinceId 110000 省份ID
cityName 市辖区 城市名称
cityId 110100 城市ID
areaName 东城区 区域名称
areaId 110000 区域Id

至于怎么获取你想默认城市的下标,可以滑动操作下选中省市区后,点击确定后查看appData里的regionValue的值。

以上就是一个自定义数据版本的省市区二级、三级联动啦,老规矩,结尾放代码片段。

https://developers.weixin.qq.com/s/F9k9cTmT7LAz

最后一次编辑于  2022-07-20  
点赞 46
收藏
评论

27 个评论

  • 信仰2
    信仰2
    2020-04-14

    不知道为毛帖子收藏不了

    2020-04-14
    赞同
    回复 11
    • 拎壶冲^
      拎壶冲^
      2020-04-14
      可以呀。
      2020-04-14
      2
      回复
    • 信仰2
      信仰2
      2020-04-14回复拎壶冲^
      你好 想问问在哪里可以初始化这个picker呢 比如我一进来要选择广东省广州市白云区
      2020-04-14
      回复
    • 拎壶冲^
      拎壶冲^
      2020-04-14回复信仰2
      onLoad里哈。
      2020-04-14
      1
      回复
    • 拎壶冲^
      拎壶冲^
      2020-04-14回复信仰2
      onLoad(options) {
          // 默认联动显示北京
          var id = address.provinces[18].id 
          this.setData({
            provinces: address.provinces, // 34省
            citys: address.citys[id], //默认北京市辖区
            areas: address.areas[address.citys[id][0].id],
            value: [18, 0, 5],
            regionValue: [18, 0, 5],
          })
        },
      2020-04-14
      3
      回复
    • 拎壶冲^
      拎壶冲^
      2020-04-14
      18,0,5是广东广州白云区的下标。这个可以在你选择后 appData的value里查看。
      2020-04-14
      2
      回复
    查看更多(6)
  • 小D
    小D
    2020-03-29

    您好!初始进入页面时点击选择地址,地址选择器点取消,再点选择地址,选默认确定,北京的地址无法正常显示,如果初始页面点击选择地址,地址选择器点确定可以正常显示北京的地址,这算是一个BUG

    2020-03-29
    赞同
    回复 2
    • 拎壶冲^
      拎壶冲^
      2020-03-31
      收到。我查看下。。
      2020-03-31
      3
      回复
    • 拎壶冲^
      拎壶冲^
      2020-03-31
      问题已修复,感谢反馈
      2020-03-31
      3
      回复
  • 小D
    小D
    2020-03-29

    您好!请问点击外面取消弹窗怎么实现?类似于于原生picker的bindcancel()方法

    2020-03-29
    赞同
    回复
  • 夕颜妃子笑
    夕颜妃子笑
    2020-03-27

    又是一个摩拜小弟

    2020-03-27
    赞同
    回复
  • 2020-02-29

    您好,数据源能提供一下吗?

    2020-02-29
    赞同
    回复 5
    • 拎壶冲^
      拎壶冲^
      2020-03-02
      在代码片段里。
      2020-03-02
      2
      回复
    • 2020-03-02回复拎壶冲^
      我指city.js那个文件
      2020-03-02
      回复
    • 拎壶冲^
      拎壶冲^
      2020-03-02
      代码片段里有city.js那个文件吖。你是问我这个文件哪里来的么 还是?
      2020-03-02
      2
      回复
    • 2020-03-02回复拎壶冲^
      能分享一下这个文件的下载地址码?
      2020-03-02
      回复
    • 拎壶冲^
      拎壶冲^
      2020-03-02
      不是,老哥 我放代码片段里了。你直接拷贝出来就可以用了呀。
      2020-03-02
      2
      回复
  • 神经蛙
    神经蛙
    2020-01-19

    [{

    "code": "129"

    "name": "北京市"

    "children": [{

    "code": "8285"

    "countyList": null

    }]

    }, {

    "code": "130"

    "name": "天津市"

    "children": [{

    "code": "7926"

    "name": "天津市"

    }]

    }]

    有时候哦我们的省市区格式是这样的,这种咋用啊



    2020-01-19
    赞同
    回复 1
    • 拎壶冲^
      拎壶冲^
      2020-01-19
      格式都可自定义的。只是前端获取的方式需要改下。
      2020-01-19
      2
      回复
  • 小肥羊🍊
    小肥羊🍊
    2019-12-20

    习惯了,见到大佬的文章,不由自主会先赞后收藏

    2019-12-20
    赞同
    回复

正在加载...

登录 后发表内容