【经验分享】如何实现自定义数据源的级联选择组件?

简介: 【经验分享】如何实现自定义数据源的级联选择组件?

先上效果图:

效果跟 my.regionPicker 一致,但是数据源是我们自定义,并不只是城市

my.regionPicker 数据源内置为城市,并且企业才能使用,不支持个人。


开发过支付宝小程序的小伙伴都知道 支付宝的 picker 实现有两种方式:

一种是直接使用picker组件,一种是使用my.optionSelect的方式唤起picker。

这两种方式有一个共同的缺点:那就是还不支持级联选择,只能使用 my.multiLevelSelect 实现级联选择,但是这个UI样式的级联选择却不是我们需要的。


那么我们如果需要自定义 picker的UI样式该如何操作呢?

这里我们使用到了 picker-view组件,并对从下往上的弹出效果做了个pop-up组件:

<view class="address-item" onTap="pickAddress">
  <view class="item-title">所在地区:</view>
  <view class="item-content arrow {{region ? '' : 'item-content_shadow'  }}">{{region||"请选择"}}</view>
</view>
<pop-up visible="{{visible}}" onClose="closePopUp">
  <view slot="content">
    <view class="picker-view">
      <view class="picker-view__pane">
        <text catchTap="cityCancel">取消</text>
        <text catchTap="citySure">确定</text>
      </view>
      <picker-view class="pick-view__group" onChange="cityChange" value="{{value}}">
        <picker-view-column indicator-class="item_active">
          <view a:for="{{provinces}}" class="picker-item" a:key="index">{{item.name}}</view>
        </picker-view-column>
        <picker-view-column>
          <view a:for="{{citys}}" class="picker-item" a:key="index">{{item.name}}</view>
        </picker-view-column>
        <picker-view-column>
          <view a:for="{{areas}}" class="picker-item" a:key="index">{{item.name}}</view>
        </picker-view-column>
      </picker-view>
    </view>
  </view>
</pop-up>


实现出来的效果 其实是有点小问题的,希望官方对于picker-view组件能增加 onPickerStart 以及 onPickerEnd的回调方法。方便我们对于用户开始滑动picker以及picker惯性滚动结束的通知进行处理。


详细逻辑处理都已放到代码片段里,具体的代码建议自行查看即可,就不贴出来啦。

https://pen.mini-code.com/s/d7318d5d-005c-48ed-bc64-9552bce738b9


Q&A:

  1. 在哪里可以初始化这个picker呢 比如我一进来要选择广东省广州市白云区。
  1. 广东省广州市白云区的下标为[18, 0, 5] 我们只需要给它赋值一次即可。
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]
  })
},
  1. 数据源如何自定义?
  1. 修改代码里city.js的数据格式,建议尽量按照格式进行替换,不然需要修改下index.js的字段。
目录
相关文章
|
2月前
|
人工智能 自然语言处理 数据可视化
阿里云百炼大模型服务平台介绍:模型优势、模型服务、计费规则及使用流程介绍
阿里云百炼是一站式大模型开发与应用平台,集成通义千问全系列及DeepSeek、Kimi、GLM等主流第三方模型,提供模型调用、微调、智能体与工作流构建的全链路能力。平台支持API调用、可视化编排及高代码开发三种方式,兼容OpenAI协议,开发者可零门槛接入。计费灵活,提供按Token用量、Token Plan订阅(低至4.5折)及阶梯计费等模式;新人享每日200次Qwen3.7-Max免费调用,夜间22:00至08:00更有2折错峰优惠,综合最高可省80%,助力个人开发者与企业以最优成本落地AI应用。
|
7月前
|
人工智能 编解码 自然语言处理
2026年OpenClaw/Clawdbot极速部署+本地SD1.5文生图实战,打造自定义AI形象
2026年,OpenClaw(原Clawdbot)的功能边界持续拓展,从高效执行办公任务、量化交易辅助,进化到支持本地文生图自定义形象——通过对接Stable Diffusion 1.5(SD1.5),结合realisticVisionV60B1模型与IP-Adapter-FaceID技术,实现“输入文本+参考图”即可生成风格统一、特征一致的专属图像,全程本地运行无API费用,隐私安全与创作自由兼得。
3607 5
|
人工智能 并行计算 测试技术
从商业海报到二次元插画多风格通吃!HiDream-I1:智象未来开源文生图模型,17亿参数秒出艺术大作
HiDream-I1是智象未来团队推出的开源图像生成模型,采用扩散模型技术和混合专家架构,在图像质量、提示词遵循能力等方面表现优异,支持多种风格生成。
1460 2
从商业海报到二次元插画多风格通吃!HiDream-I1:智象未来开源文生图模型,17亿参数秒出艺术大作
|
9月前
|
API
【剪映小助手】获取草稿文件列表
获取草稿文件列表。该接口用于获取指定草稿ID对应的所有文件列表,可以查看草稿中包含的素材文件、配置文件等信息。通常用于草稿内容的预览、文件管理或状态检查。
1513 0
|
数据安全/隐私保护 容器 Go
开源IM即时通讯系统调研
Lumen IM 是一款企业级开源即时通讯工具,前端采用 Vue3 + Naive UI,后端基于 Go 语言,使用 WebSocket 协议。支持 Docker + Nginx 快速部署,适合私有化环境。功能包括文本、图片、文件消息,内置笔记、群聊及消息历史记录。界面美观、功能完善,适用于企业沟通、团队协作及开发者学习。提供前后端源码,便于快速搭建 IM 系统。
开源IM即时通讯系统调研
|
自然语言处理 JavaScript 算法
【插件】IDEA这款插件,爱到无法自拔
本文介绍了阿里云「通义灵码」这一强大IDEA插件,它不仅能够智能生成代码、解答研发问题,还支持多种编程语言和编辑器。文章详细展示了如何安装使用该插件,并通过多个实际案例说明其在代码解释、优化、生成注释及单元测试等方面的应用,助力开发者提高效率。强烈推荐尝试!
1743 1
【插件】IDEA这款插件,爱到无法自拔
|
XML Java 数据库连接
IDEA如何使mapper直接跳转到xml,超实用
【10月更文挑战第23天】本文介绍了如何在 MyBatis 框架中配置 Mapper 接口和 XML 文件的关联。方法一:使用 MyBatis-Generator 插件自动生成代码;方法二:手动配置,包括命名规范、文件路径设置和 IDEA 设置;此外,还可以通过快捷键、导航栏和 MyBatis-Plugin 插件来增强跳转功能。
8526 1

热门文章

最新文章