社区官方列出的常见问题:小程序常见问题汇总
下面是本人在项目中遇到的一些问题,或附上解决思路:
框架相关
- 页面标题:
navigationBarTitleText
→defaultTitle
。
组件
- wx.showModal,在支付宝小程序上拆分为 my.alert 和 my.confirm , 交互反馈
- canvas:
API
微信支付:
wx.request()
→my.httpRequest()
,二者参数不一致。缓存:
wx.setStorageSync(string key, any data)
→my.setStorageSync({key: key, data: value})
,getStorageSync 和 removeStorage 也类似。wx.showToast 关于 loading 的要改成:my.showLoading
my.showToast( ) 内容属性,微信小程序是title
,支付宝小程序是content
,且没有mask
属性。form 组件事件:bindreset → onReset、 bindsubmit → onSubmit
input、textarea 组件事件:bindinput → onInput、bindblur → onBlur、bindfocus → onFocus
canvas 组件事件:onTouchstart → onTouchStart、onTouchmove → onTouchMove、onTouchend → onTouchEnd
组件属性:canvas-id → id
div,span 标签在支付宝小程序都不支持,改成 view、text 标签即可。
拨打电话
微信:wx.makePhoneCall({ phoneNumber: '020-11183' });
支付宝:my.makePhoneCall({ number: '020-11183' });
my.alert(object) 没有“取消”按钮,以及“确定”按钮的键为:buttonText
支付宝小程序中,如果标签中写了两个或以上
class
属性,只能读取第一个,可能是 bug!(请忽略,跟支付宝小程序无关)一些字段改变:
wxChannel → aliChannel
updateWxUserChannel → updateAliUserChannelcheckbox 组件的改变事件属性为:onChange=“changeFn”
my.getImageInfo 有兼容性的问题,需要做处理。在联想手机上有问题,可能是因为支付宝 APP 版本过低的原因
在支付宝小程序 my.uploadFile 接口中,不需要把头部信息设为 header: { "Content-Type": "multipart/form-data" } ,这个可能导致个别机型接口返回数据错误,导致无法正常显示图片。而微信小程序 wx.uploadFile 中,如果发起 POST 请求,则需要把头部信息设成上面那样。
this.setData() 方法,从 1.7.0 版本开始,setData可以接受传递一个回调函数,该回调函数会在页面渲染之后执行。使用
my.canIUse('page.setData.callback')
做兼容性处理
my.httpRequest API 接口失败返回的错误码描述有误,官方已确认,待修正!my.httpRequest
picker 中只能含有一个子元素。若多个元素,需要用 view 括起来,否则不显示。
(请忽略,非支付宝 api )去掉函数 compareAppVersionToTarget 和 compareWxVersion
多个空格的问题:
<!-- 微信小程序支持,但低版本的支付宝客户端不兼容这种写法 -->
<text decode="{{true}}" space="nbsp"> </text>
<!-- 兼容低版本支付宝客户端的写法 -->
<text style="white-space: pre-wrap">{{' '}}</text>
CSS3 为 white-space 新增了pre-line 和 pre-wrap 属性,前者会将多个空格合成一个,后者会保留所有空格。详情可以看一下这篇文章:white-space中 pre pre-line pre-wrap的区别。
文件下载的相关接口,成功回调里的路径:res.tempFilePath → res.apFilePath
适配 iPhone X 导航的需要修改,支付宝里
my.getSystemInfo
获取的res.model
值不一样。删除地址的弹窗:wx.alert() 要改成 my.confirm()。
业务相关
- 订单详情页面
支付时间
字段