帖子
帖子
用户
博客
课程
12下一页
返回列表 发新帖
显示全部楼层
35
帖子
2
勋章
366
Y币

[BUG] picker 实现省市区选择

[复制链接]
发表于 2022-10-11 16:33:59
[tr][/tr]
picker做省市区三联选择时,在第一次都选择到底部时,怎么在切换第一列,让第二列跟第三列自动滚动回顶部







35
帖子
2
勋章
366
Y币
  1. <template>
  2.     <scroll-view class="main" scroll-y>
  3.         <safe-area></safe-area>
  4.         <picker class="picker" id="selector" mode="selector" value={selectorValue} onChange={this.selectorChange}>
  5.             <text>选择性别:{genderDesc}</text>
  6.         </picker>
  7.         <picker class="picker" id="multiSelector" mode="multiSelector" value={multiSelectorValue} onChange={this.multiSelectorChange}>
  8.             <text>选择年月:{dateDesc}</text>
  9.         </picker>
  10.         <picker class="picker" id="areaMltiSelector" mode="multiSelector" range-key="name" value={areaMltiSelectorValue} onchange={this.areaMultiSelectorChange} oncolumnchange={this.areaMultiSelectorColumnChange}>
  11.             <text>选择区域:{areaDesc}</text>
  12.         </picker>
  13.     </scroll-view>
  14. </template>
  15. <style>
  16.     .main {
  17.         width: 100%;
  18.         height: 100%;
  19.     }
  20.     .picker {
  21.         margin: 8px;
  22.     }
  23. </style>
  24. <script>
  25.     export default {
  26.         name: 'test',
  27.         data(){
  28.             return {
  29.                 genderDesc: '',
  30.                 dateDesc: '',
  31.                 areaDesc: '',
  32.                 selectorValue: 0,
  33.                 multiSelectorValue: [0, 0],
  34.                 areaMltiSelectorValue: [0, 0, 0],
  35.                 genderList: ['男','女'],
  36.                 dateList: [[1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990],[1,2,3,4,5,6,7,8,9,10,11,12]],
  37.                 areaList: [],
  38.                 areaInfo: [{
  39.                     "name": "北京",
  40.                     "sub": [{
  41.                         "name": "北京市",
  42.                         "sub": [{
  43.                             "name": "东城区"
  44.                         }, {
  45.                             "name": "西城区"
  46.                         }, {
  47.                             "name": "海淀区"
  48.                         }, {
  49.                             "name": "朝阳区"
  50.                         }, {
  51.                             "name": "丰台区"
  52.                         }, {
  53.                             "name": "石景山区"
  54.                         }, {
  55.                             "name": "昌平区"
  56.                         }, {
  57.                             "name": "通州区"
  58.                         }]
  59.                     }]
  60.                 }, {
  61.                     "name": "河南省",
  62.                     "sub": [{
  63.                         "name": "郑州市",
  64.                         "sub": [{
  65.                             "name": "中原区"
  66.                         }, {
  67.                             "name": "金水区"
  68.                         }]
  69.                     }, {
  70.                         "name": "驻马店市",
  71.                         "sub": [{
  72.                             "name": "西平县"
  73.                         }, {
  74.                             "name": "泌阳县"
  75.                         }]
  76.                     }]
  77.                 }, {
  78.                     "name": "河南省2",
  79.                     "sub": [{
  80.                         "name": "郑州市2",
  81.                         "sub": [{
  82.                             "name": "中原区2"
  83.                         }, {
  84.                             "name": "金水区2"
  85.                         }]
  86.                     }, {
  87.                         "name": "驻马店市2",
  88.                         "sub": [{
  89.                             "name": "西平县2"
  90.                         }, {
  91.                             "name": "泌阳县2"
  92.                         }]
  93.                     }]
  94.                 }, {
  95.                     "name": "河南省3",
  96.                     "sub": [{
  97.                         "name": "郑州市3",
  98.                         "sub": [{
  99.                             "name": "中原区3"
  100.                         }, {
  101.                             "name": "金水区3"
  102.                         }]
  103.                     }, {
  104.                         "name": "驻马店市3",
  105.                         "sub": [{
  106.                             "name": "西平县3"
  107.                         }, {
  108.                             "name": "泌阳县3"
  109.                         }]
  110.                     }]
  111.                 }]
  112.             }
  113.         },
  114.         methods:{
  115.             apiready() {
  116.                 var selector = document.getElementById('selector');
  117.                 selector.setData({
  118.                     data: this.data.genderList
  119.                 });

  120.                 var multiSelector = document.getElementById('multiSelector');
  121.                 multiSelector.setData({
  122.                     data: this.data.dateList
  123.                 });

  124.                 this.initAreaData(this.data.areaMltiSelectorValue);
  125.             },
  126.             initAreaData(values) {
  127.                 var component0 = [];
  128.                 for (var i=0;i<this.data.areaInfo.length;i++) {
  129.                     component0[i] = this.data.areaInfo[i];
  130.                 }
  131.                 var component1 = component0[values[0]]['sub'];
  132.                 var component2 = component1[values[1]]['sub'];
  133.                 var dataList = [component0, component1, component2];
  134.                 this.data.areaList = dataList;
  135.                 var picker = document.getElementById('areaMltiSelector');
  136.                 picker.setData({
  137.                     data: dataList
  138.                 });
  139.             },
  140.             selectorChange(e) {
  141.                 this.data.selectorValue = e.detail.value;
  142.                 this.data.genderDesc = this.data.genderList[this.data.selectorValue];
  143.             },
  144.             multiSelectorChange(e) {
  145.                 this.data.multiSelectorValue = e.detail.value;
  146.                 this.data.dateDesc = this.data.dateList[0][this.data.multiSelectorValue[0]] + '-' + this.data.dateList[1][this.data.multiSelectorValue[1]];
  147.             },
  148.             areaMultiSelectorChange(e) {
  149.                 var value = e.detail.value;
  150.                 this.data.areaMltiSelectorValue = value;
  151.                 var region = '';
  152.                 if (this.data.areaList.length > 0) {
  153.                     for (var i=0;i<value.length;i++) {
  154.                         var index = value[i];
  155.                         var list = this.data.areaList[i];
  156.                         region += list[index].name;
  157.                     }
  158.                 }
  159.                 this.data.areaDesc = region;
  160.             },
  161.             areaMultiSelectorColumnChange(e) {
  162.                 var column = e.detail.column;
  163.                 if (column == this.data.areaList.length-1) {
  164.                     return;
  165.                 }
  166.                 var value = e.detail.value;
  167.                 var selectValue = this.data.areaMltiSelectorValue;
  168.                 selectValue[column] = value;
  169.                 if (column == 0) {
  170.                     selectValue[1] = 0;
  171.                     selectValue[2] = 0;
  172.                 } else if (column == 1) {
  173.                     selectValue[2] = 0;
  174.                 }
  175.                 this.initAreaData(selectValue);
  176.             }
  177.         }
  178.     }
  179. </script>
复制代码
35
帖子
2
勋章
366
Y币
先正常选择河南省,在切换到北京,第三联数据没变
先正常选择河南省2,第二联没回滚,第三联是郑州市的区

先正常选择河南省

先正常选择河南省

选择北京第三联没反应

选择北京第三联没反应

选择河南省金水区是郑州市的

选择河南省金水区是郑州市的

先正常选择河南省2

先正常选择河南省2
35
帖子
2
勋章
366
Y币
官网案例代码拷贝下来的,麻烦那边测试下会不会出现这样的问题
380
帖子
4
勋章
6
Y币
https://www.apicloud.com/mod_detail/143214  

可以用这个组件
35
帖子
2
勋章
366
Y币
技术咨询-F · 2022-10-11 16:54https://www.apicloud.com/mod_detail/143214  

可以用这个组件

现在用的是这个组件出问题了,发了帖子让我看案例,我把案例代码拷贝下来运行一样的结果,帖子被关闭了。
380
帖子
4
勋章
6
Y币
BIP205126 · 2022-10-11 17:01现在用的是这个组件出问题了,发了帖子让我看案例,我把案例代码拷贝下来运行一样的结果,帖子被关闭了。

这个组件有完整城市列表。 帖子关闭不影响继续回复。
380
帖子
4
勋章
6
Y币
Android 上有bug,  iOS上是正常的。 已反馈,等待修复。
35
帖子
2
勋章
366
Y币
技术咨询-F · 2022-10-11 19:02Android 上有bug,  iOS上是正常的。 已反馈,等待修复。

你好,这个问题修复了吗
380
帖子
4
勋章
6
Y币
BIP205126 · 2022-10-15 09:51你好,这个问题修复了吗

还没有
12下一页
您需要登录后才可以回帖 登录

本版积分规则