评论

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

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

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

效果图:

额,这个视频转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 个评论

  • 丁艳
    丁艳
    2021-10-09

    我把代码复制了 但是js中有报错

     Cannot read property '0' of undefined

        at Ui.onLoad (user.js? [sm]:20)

        at Ui.<anonymous> (VM226 WAService.js:2)

        at Ui.o.__callPageLifeTime__ (VM226 WAService.js:2)

        at ir (VM226 WAService.js:2)

        at VM226 WAService.js:2

        at cr (VM226 WAService.js:2)

        at a.<anonymous> (VM226 WAService.js:2)

        at K.<anonymous> (VM226 WAService.js:2)

        at K.emit (VM226 WAService.js:2)

        at Object.emit (VM226 WAService.js:2)(env: Windows,mp,1.05.2107090; lib: 2.20.0)

    2021-10-09
    赞同
    回复
  • undefined
    undefined
    2021-04-03

    雷霆嘎巴

    2021-04-03
    赞同
    回复
  • 芥子
    芥子
    2021-03-11

    大佬,想问一下这边设置是什么意思,我在项目中使用时候有时候会无法显示内容,wxml中没有未显示内容的标签,这大概是哪里的问题呢

    2021-03-11
    赞同
    回复
  • chen
    chen
    2020-12-31

    大佬省市区的数据还有吗可以分享一下吗

    2020-12-31
    赞同
    回复 1
    • TNT
      TNT
      2020-12-31
      代码片段里有。我有单独弄一个js文件。你打开代码片段可以看到。
      2020-12-31
      回复
  • 一蓑烟雨
    一蓑烟雨
    2020-07-14

    大佬,我用你的原生文件复制了下,我更改了index也为组件,然后把index(里面有pop-up组件),拿到页面显示,,页面显示不出选择的数据.

    2020-07-14
    赞同
    回复 6
    • TNT
      TNT
      2020-07-14
      搞个代码片段发我。
      2020-07-14
      3
      回复
    • 一蓑烟雨
      一蓑烟雨
      2020-07-14回复TNT
      代码全用你上传的那个代码,就是把里面的index页面文件改为组件文件了,然后在页面里面用index这个组件,代码一点没动.
      2020-07-14
      回复
    • TNT
      TNT
      2020-07-14回复一蓑烟雨
      你用我写的代码片段。改造成你现在这样然后发我。我给你改下。
      2020-07-14
      3
      回复
    • 一蓑烟雨
      一蓑烟雨
      2020-07-14回复TNT
      我没改你的代码,就是把index这个文件,我改为了组件,然后放到页面使用,就变成上面图片那样了,代码一点没动.
      2020-07-14
      回复
    • 一蓑烟雨
      一蓑烟雨
      2020-07-14回复一蓑烟雨
      我知道问题在哪了,页面传值到组件那里,组件和组件传值我还没设置,麻烦大佬了!
      2020-07-14
      回复
    查看更多(1)
  • own
    own
    2020-06-17

    选到最后一个就报错了

    2020-06-17
    赞同
    回复 5
    • TNT
      TNT
      2020-06-17
      第几列选到最后一个。
      2020-06-17
      3
      回复
    • TNT
      TNT
      2020-06-17
      2020-06-17
      2
      回复
    • own
      own
      2020-06-17回复TNT
      没事了  我的问题
      2020-06-17
      回复
    • own
      own
      2020-06-17
      现在是选择时 取消在显示  显示错误
      2020-06-17
      回复
    • TNT
      TNT
      2020-06-17回复own
      👌
      2020-06-17
      1
      回复
  • 🔅曲水
    🔅曲水
    2020-06-04

    请问数据回显怎么做呀。需求是编辑的时候,需要回显之前选择的省市区。

    2020-06-04
    赞同
    回复 10
    • TNT
      TNT
      2020-06-04
      弹起来的时候需要自动选择 之前选择的是吗?
      2020-06-04
      3
      回复
    • TNT
      TNT
      2020-06-04
      需要知道之前选择省市区的code。在onLoad的时候进行回填即可。
      2020-06-04
      3
      回复
    • TNT
      TNT
      2020-06-04
      2020-06-04
      2
      回复
    • 🔅曲水
      🔅曲水
      2020-06-04回复TNT
      基本上是这样,不过还有一个场景是,组件已经加载完成了,此时再塞值给组件,回显省市区。
      如图,选择乙方全称后,带出公司地址,做回显。
      2020-06-04
      回复
    • TNT
      TNT
      2020-06-04回复🔅曲水
      那你可以重新赋值一遍就好了呀
      2020-06-04
      3
      回复
    查看更多(5)
  • 路人李
    路人李
    2020-06-01

    我这块 修改了一下,然后默认显示北京,在点击北京就是空的,如果选择了别的城市,在选择北京 才可以,大佬有时间的时候,麻烦指导下

    2020-06-01
    赞同
    回复 6
    • TNT
      TNT
      2020-06-01
      具体是指?需要默认展示北京是么?
      2020-06-01
      3
      回复
    • 路人李
      路人李
      2020-06-01回复TNT
      把你的原版代码撸下来,按照我的需求做了部分改动,现在是默认展示的是北京,但是点开picker选择北京就是空的,如果先选择了别的城市在选择北京,才会显示
      2020-06-01
      1
      回复
    • TNT
      TNT
      2020-06-01回复路人李
      改动的代码能贴个代码片段么??
      2020-06-01
      3
      回复
    • TNT
      TNT
      2020-06-01回复路人李
      你现在想实现什么样式。我看下我能不能给你改。
      2020-06-01
      4
      回复
    • 路人李
      路人李
      2020-06-02回复TNT
      问题已修复,感谢大佬
      2020-06-02
      回复
    查看更多(1)
  • Rick
    Rick
    2020-05-28

    请问选中的文字,颜色可以自定义吗?如何自定义呢

    2020-05-28
    赞同
    回复 5
    • TNT
      TNT
      2020-05-28
      选中的文字??是指点确定后的还是 下面滚动区域的文字
      2020-05-28
      回复
    • TNT
      TNT
      2020-06-02
      2020-06-02
      3
      回复
    • 路人李
      路人李
      2020-06-02
      谢谢大佬,
      2020-06-02
      回复
    • Rick
      Rick
      2020-06-02回复TNT
      大佬啊(捂脸),最近一直在忙,都没看到你回复我了,而且还回复了代码,真是感谢啊!!!XD
      2020-06-02
      回复
    • TNT
      TNT
      2020-06-02回复Rick
      2020-06-02
      1
      回复
  • 2020-05-06

    很棒。非常感谢

    2020-05-06
    赞同
    回复

正在加载...

登录 后发表内容