人人商城v3小程序添加收货地址,选择通过微信收货地址来添加,保存时会将地址变为安徽省合肥市瑶海区。Debug代码后发现是由于获取微信地址后,没有解析出datavalue(省市区编码),导致只有文字描述,没有编码,编码默认就是[0,0,0],所以自动修改成了安徽省合肥市瑶海区。
Debug代码处 pages/member/address/post
查看了逻辑流程,发现是在onload代码中,core.get获取了数据后赋值给detail,然后通过this.getDetail()来解析通过微信获取地址的省市区代码。
重点来了,因为core.get是异步的,未封装成Promise,就导致还没赋值就直接去解析了。方法也简单,直接在get请求前先赋值,或者直接在get结果中再次解析省市区代码,或者改造core.get为Promise。
方法1:在get前赋值
方法2:在get结果中再次解析,此处也要注意setData渲染也是异步非实时的,不过可以考虑放到纯数据字段中后再解析或者放到setData的回调函数中
方法3:嘿嘿,偷懒不写~
评论回复