当前位置: 首页 > news >正文

小程序问题汇总

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

相关文章:

  • OpenCV C++双目摄像头实现双目测距
  • 【老师见打系列】:我只是写了一个自动回复讨论的脚本~
  • MATLAB | 如何使用MATLAB绘制甘特图(gantt chart)
  • STM32定时器深入学习
  • JavaConfig
  • codeblock图形界面编程(十)文件操作
  • 算法与数据结构【30天】集训营——详解查找章节数据结构(C语言版 第2版)课后习题答案 (20)
  • 对象以死嘛?对象什么时候该死?看这一篇就够了
  • DDoS报告团伙规模
  • Android 注解与注解处理器简述
  • 【C++】STL——vector(万字详解)
  • Rust学习指南(一)安装RUST后台管理框架
  • 车载操作系统汇总
  • 硬件工程师成长之路(10.1)——芯片选型
  • libusb系列-001-libusb简介
  • 【css3】浏览器内核及其兼容性
  • Date型的使用
  • echarts花样作死的坑
  • ES6--对象的扩展
  • Python实现BT种子转化为磁力链接【实战】
  • Rancher-k8s加速安装文档
  • 理解在java “”i=i++;”所发生的事情
  • 聊聊flink的BlobWriter
  • 前端工程化(Gulp、Webpack)-webpack
  • 驱动程序原理
  • 微信开放平台全网发布【失败】的几点排查方法
  • 新书推荐|Windows黑客编程技术详解
  • 正则表达式小结
  • Nginx实现动静分离
  • 阿里云服务器购买完整流程
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #AngularJS#$sce.trustAsResourceUrl
  • #pragma once与条件编译
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (0)Nginx 功能特性
  • (09)Hive——CTE 公共表达式
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (阿里云万网)-域名注册购买实名流程
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (接口自动化)Python3操作MySQL数据库
  • (强烈推荐)移动端音视频从零到上手(上)
  • (一)UDP基本编程步骤
  • (转)德国人的记事本
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET : 在VS2008中计算代码度量值
  • .NET Framework杂记
  • .net 流——流的类型体系简单介绍
  • .NET 使用配置文件
  • /etc/fstab 只读无法修改的解决办法
  • @angular/cli项目构建--Dynamic.Form
  • @Async注解的坑,小心
  • @Autowired和@Resource的区别
  • @test注解_Spring 自定义注解你了解过吗?
  • [ JavaScript ] JSON方法