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

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

先上效果图:

效果跟 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月前
|
数据处理 调度
Dataphin功能Tips系列(26)-事实逻辑表配置数据延迟
零售行业中,订单数据是每天晚上由pos系统同步至数据中台,但门店人员经常会没有及时将订单信息录入pos,也许隔天或是隔几天才录入,这会导致指标的不准确性,数据中台的开发人员往往需要进行批量补历史分区的数据,这时怎么才能减轻开发人员的工作,让系统能够自动补前几天分区中的事实逻辑表中的数据呢?
|
4月前
|
缓存 前端开发
ProFlow 流程编辑器框架问题之创建一个自定义节点如何解决
ProFlow 流程编辑器框架问题之创建一个自定义节点如何解决
45 1
|
4月前
|
JavaScript 前端开发 定位技术
云解析地图作业问题之在搭建页面中简化数据筛选的过程如何解决
云解析地图作业问题之在搭建页面中简化数据筛选的过程如何解决
33 0
|
6月前
|
前端开发 数据库 JavaScript
基于Flowable的流程挂接自定义业务表单的设计与实践
文章讨论了如何在Flowable流程引擎中挂接自定义业务表单,以及相关设计和实践的步骤。文章中包含了一些前后端代码示例,如Vue组件的模板和脚本部分,这些代码用于实现与Flowable流程引擎交互的界面。例如,有一个按钮组件用于提交申请,点击后会触发applySubmit方法,该方法会与后端API进行交互,处理流程启动、查询关联流程等逻辑。
49649 11
|
6月前
|
DataWorks 监控 安全
DataWorks产品使用合集之如何使用节点依赖关系来配置任务之间的执行顺序
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
65 2
|
数据可视化 JavaScript
可视化拖拽组件库一些技术要点原理分析(二)(上)
可视化拖拽组件库一些技术要点原理分析(二)
106 1
|
数据可视化 API
可视化拖拽组件库一些技术要点原理分析(三)(二)
可视化拖拽组件库一些技术要点原理分析(三)(二)
107 0
|
7月前
|
移动开发 前端开发 JavaScript
动态获取新增的数据+项目实例介绍
动态获取新增的数据+项目实例介绍
95 0
|
数据可视化 JavaScript
可视化拖拽组件库一些技术要点原理分析(四)(上)
可视化拖拽组件库一些技术要点原理分析(四)
97 0
可视化拖拽组件库一些技术要点原理分析(四)(上)
|
JSON 数据可视化 前端开发
可视化拖拽组件库一些技术要点原理分析(二)(下)
可视化拖拽组件库一些技术要点原理分析(二)(下)
110 0