追梦随想
追梦随想
  • 发布:2020-01-13 19:34
  • 更新:2020-01-18 12:10
  • 阅读:1166

【报Bug】picker-view 城市组件,如果没有市和区列,第三列不会清空,会报错

分类:uni-app

用 picker-view 做了一个省市区的选项,但是某些特殊省份没有后面两列,第二列会自动清空,第三列却不会清空,导致控制台报错。


做了判断也是不行

报错信息

TypeError: null is not an object (evaluating '_vm.data_list[_vm.selectValue[0]].children[  
_vm.selectValue[1]  
]')

测试机为安卓,苹果机没有测
软件版本:2.5.5.20200111-alpha

2020-01-13 19:34 负责人:无 分享
已邀请:

最佳回复

DCloud_UNI_GSQ

DCloud_UNI_GSQ

这个报错应该没毛病
看了一下你的用法:data_list[selectValue[0]].children[selectValue[1]].children
当data_list[selectValue[0]].children值已经为null的时候你仍然要继续访问[selectValue[1]].children,理应报错
比如改成:

<view class="picker-item" v-for="(item, index) in data_list[selectValue[0]].children&&data_list[selectValue[0]].children[selectValue[1]].children" :key="index">{{item[rangeKey]}}</view>

另外社区有一些城市选择插件,你也可以参考

  • 追梦随想 (作者)

    受教了,判断还能这么用,没有用插件的原因是目前插件会改变数据结构,而我的项目是从MUI转过来的,没办法只能自己动手了。你提供的解决办法能解决第二个问题,第一个问题依然存在,但是并不影响使用,有空可以看看,感谢

    2020-01-18 12:07

  • DCloud_UNI_GSQ

    <view class="picker-item" v-for="(item, index) in data_list[selectValue[0]].children&&data_list[selectValue[0]].children[selectValue[1]]&&data_list[selectValue[0]].children[selectValue[1]].children" :key="index">{{item[rangeKey]}}</view>

    2020-01-18 12:17

  • 追梦随想 (作者)

    回复 DCloud_UNI_GSQ: 给你100个赞,我还是经验欠缺,十分感谢,稍后我打包成插件,方便使用MUI的老项目,在不修改原有数据结构的情况下也能使用 picker 组件

    2020-01-18 12:30

DCloud_UNI_GSQ

DCloud_UNI_GSQ

哪端?

追梦随想

追梦随想 (作者)

问题有两种,城市列表并非所有城市都是三列,比如广东东莞、中山只有两列,当然也可能是我这边没有收集齐全,其他城市有没有两列的没注意到,港澳台只有一列,这两种情况都会报错。
第一种:把省份设置为广东、城市为东莞,没有第三列,然后滚动省份,控制台就会报错,大概就是第三列没有的意思。
第二种:把省份设置为港澳台任意一个,控制台就会报错。
为了解决这个问题,我把第三列做了判断,如果没有就不显示,但是并不能完美的解决,因为少了第三列,只能返回两个值,而这个组件少一个值就会报错。。。
@DCloud_UNI_GSQ

弃医从文

弃医从文

吃瓜

该问题目前已经被锁定, 无法添加新回复