胜天半子祁厅长
胜天半子祁厅长
  • 发布:2019-03-15 15:44
  • 更新:2019-03-15 15:44
  • 阅读:190

【经验分享】pickers 省市区多级联动设置默认值

分类:MUI

【介绍】
当我们使用 mui.PopPicker 创建省、市、区三级联动,并且想要选中默认值的时候,
会出现只能选中第一级,无法选择第二级、第三级。

【原因】
这是因为 pickers 在设置默认值的时候是异步执行,并且有动画效果,我们就不能直接通过以下代码设置:

picker.pickers[0].setSelectedValue(100);  
picker.pickers[1].setSelectedValue(120);  
picker.pickers[2].setSelectedValue(123);  

【解决】
如何解决?使用递归的方式调用即可
// 初始化选择器默认值
function initAddressSelector(index) {
if (index < picker.pickers.length && defaultData[index]) {
picker.pickers[index].setSelectedValue(defaultData[index], 0, initAddressSelector(index+1));
}
}

说明:调用的时候默认 index 传 0 ,这样代码会从第一个 picker 开始选择,setSelectedValue 的 第二参数为动画时长,这里设置 0 (单位:毫秒)即可,
setSelectedValue 的第三个参数为设置默认值成功之后回调,这里我们回调自己,并且下标 +1,这样就可以以此把 1、2、3 级全部设置上。
要设置的默认值可以放入一个数组里面,这样在递归的时候可以通过 index 下标获取到每一级的默认值。

0 关注 分享

要回复文章请先登录注册