小程序问题汇总

 

1.微信小程序规定页面路径最多只能是五层,当进入第五层页面之后,wx.navigateTo将不能正常打开新页面。请避免多层级的交互方式,或者使用如下方式解决:

(1)wx.navigateBack({
  delta: 2
})
关闭当前页面,返回上一页面或多级页面delta--返回的页面层数

(2)
wx.reLaunch({
  url: 'index?id=1'
})
关闭所有页面,打开到应用内的某个页面。
(3)
wx.redirectTo({
  url: 'test?id=1'
})
使用redirectTo代替navigateTo(关闭当前页面,跳转到应用内的某个页面)

注:tab定义过的页面跳转只能用wx.switchTab跳转,wx.navigateTo等跳转无效

2.tabBar图标必须是相对路径

3.防止重复提交和打开多个页面的方法:

(1)定义一个data来作为判断依据,如

  bindtap="{{(isConfirmBuy==0)?'':'confirmBuy'}}"(此方法仅针对多次点击按钮事件,表单重复提交无效)

(2)根据点击事件的时间戳来判断,如

function bindViewTap(e) {
//该方法针对快速点击多次跳转多次引起的BUG
var time = e.timeStamp;
//console.log(time+"---"+app.globalData.lastTapTime+"---"+Math.abs(time-app.globalData.lastTapTime))
//设置无效点击,根据自己的需求设置,这里navigateTo切换页面到动画结束需要的时间为500毫秒左右
if (Math.abs(time - app.globalData.lastTapTime) < 500 && app.globalData.lastTapTime != 0) {
//app.globalData.lastTapTime = time; //这里一定更新无效点击的时间
return false;
}else{
app.globalData.lastTapTime = time;
return true;
}
//更新有效点击的时间
}

//定义公共方法

var bvt = common.bindViewTap(e);
if(!bvt) return false;

//事件最开始调用(推荐)

4.赋值写法:

this.setData({ 'status':false }); 有效         this.data.status= true 无效

5.注意将上传下载网络请求等接口地址设置白名单。

6.小程序onLaunch里面异步取值导致首页onload取值取不到的问题

 方案:(1)做个启动页过度

            (2)把下面的方法放到异步请求成功后的success里面

if (getCurrentPages().length != 0) {
  getCurrentPages()[getCurrentPages().length - 1].onLoad()
}

7.小程序之间的跳转问题:(https://mp.weixin.qq.com/debug/wxadoc/dev/api/navigateToMiniProgram.html)

(1)相互跳转的小程序必须关联同一个公众号

(2)小程序跳转需通过extraData传值和取值,可通过App.onShow()获取,App.onLaunch()获取好像拿不到。

8.理论上只有表单提交和支付场景下可以发送模板消息(表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id

(1)支付

当用户在小程序内完成过支付行为,可允许开发者向用户在7天内推送有限条数的模板消息(1次支付可下发3条,多次支付下发条数独立,互相不影响)

(2)提交表单

当用户在小程序内发生过提交表单行为且该表单声明为要发模板消息的,开发者需要向用户提供服务时,可允许开发者向用户在7天内推送有限条数的模板消息(1次提交表单可下发1条,多次提交下发条数独立,相互不影响)

实际应用时可以通过模拟表单提交获取多个formId再保存下来,这样7天之内就可以随时给用户发送模板消息,以实现批量发送的效果。如:

<form bindsubmit="goOrderList" report-submit="true">
<button class="list" data-za-title="我的订单" formType="submit" hover-class="none">我的订单</button>
</form>

9.map、canvas、video、textarea 是由客户端创建的原生组件,原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上。 原生组件暂时还无法放在 scroll-view 上,也无法对原生组件设置 css 动画

10.微信小程序showToast都是带icon的,如果需要不带icon的toast需要自己封装

11.wx.showModal微信自带对话框,content不支持html类型数据,仅支持txt,支持\n\r,所以扩展性不好。(复杂情况下推荐自己写)

12.连续快速点击input获取焦点后马上点击按钮,input不会失去焦点键盘不会收起,应用场景如发送验证码。

 13.微信小程序授权问题:如果拒绝授权,短时间内微信不会重新调起授权框让用户重新授权。

处理方案:1.判断用户授权操作,如果拒绝,弹出确认框提示用户“将无法正常使用小程序,建议删除小程序重新进入或者手动授权,是否手动授权?”,用户点击确定,跳到设置界面,手动授权,用户点击取消,跳到取消授权页面(需开发)

 

posted @ 2017-11-23 17:43  名字好难起  阅读(477)  评论(0编辑  收藏  举报