1. picker使用时回显问题
<picker bindchange="bindNetworkPickerChange" mode="selector" range="{{networkList}}" range-key="corpName" value="{{corpIndex}}">
<image class="selection-image" src="../../images/icon-wangdian@2x.png"></image>
<text class="network font16">{{corpName}}</text>
</picker>
错误:开始写成value="cropIndex",选择的时候可以选中,但是回显的时候有误;
修改:最终发现:小程序中给属性绑定值的时候都必须带有 {{ }}
2. 小程序中使用 async/await
使用 async/await 的时候必须要勾选:ES6转ES5 和 增强编译 两个设置选项
3. 小程序中跳转页面的区别:wx.navigateTo、wx.redirectTo、wx.reLaunch、wx.switchTab、wx.navigateBack
(1)wx.navigateTo 用于保留当前页面、跳转到应用内的某个页面,使用 wx.navigateBack可以返回到原页面。对于页面不是特别多的小程序,通常推荐使用 wx.navigateTo进行跳转, 以便返回原页面,以提高加载速度。当页面特别多时,则不推荐使用。
(2)wx.redirectTo 当页面过多时,被保留页面会挤占微信分配给小程序的内存,或是达到微信所限制的 5 层页面栈。这时,我们应该考虑选择 wx.redirectTo。wx.redirectTo()用于关闭当前页面,跳转到应用内的某个页面。这样的跳转,可以避免跳转前页面占据运行内存,但返回时页面需要重新加载,增加了返回页面的显示时间。
(3)wx.reLaunch wx.reLaunch()与 wx.redirectTo()的用途基本相同, 只是 wx.reLaunch()先关闭了内存中所有保留的页面,再跳转到目标页面。
(4)wx.switchTab 对于跳转到 tab bar 的页面,最好选择 wx.switchTab(),它会先关闭所有非 tab bar 的页面。其次,也可以选择 wx.reLaunch(),它也能实现从非 tab bar 跳转到 tab bar,或在 tab bar 间跳转,效果等同 wx.switchTab()。使用其他跳转 API 来跳转到 tab bar,则会跳转失败。
(5)wx.navigateBack 用于关闭当前页面,并返回上一页面或多级页面。开发者可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层。这个 API 需要填写的参数只有 delta,表示要返回的页面数。若 delta 的取值大于现有可返回页面数时,则返回到用户进入小程序的第一个页面。当不填写 delta 的值时,就默认其为 1(注意,默认并非取 0),即返回上一页面。
4. 微信小程序wx.uploadFile 上传文件 的两个坑
fileUpload: function (tempFilePath) {
var that = this;//坑1: this需要这么处理
wx.uploadFile({
url: url地址, //app.ai_api.File.file
filePath: tempFilePath, //文件路径 这里是mp3文件
name: 'file', //随意
header: {
'Content-Type': 'multipart/form-data',
'Authorization': wx.getStorageSync("access_token"), //如果需要token的话要传
},
formData: {
method: 'POST', //请求方式
xxxxxx: 'xxxx' //其他参数
},
success(res) {
var data = JSON.parse(res.data) // 坑2:与wx.request不同的是,upload返回的是字符串格式,需要字符串对象化
if (data.code == 200) {
that.fileTrans(data.data.id); //执行接口函数 语音文件转文字
}else{
console.log('上传失败')
wx.showToast({
title: res.message,
icon: 'none'
})
}
}
})
5. 小程序中 bindtap 和 catchtap 的区别(小程序中事件分为冒泡事件和非冒泡事件)
(1) 相同点:首先他们都是作为点击事件函数,就是点击时触发。在这个作用上他们是一样的,可以不做区分。
(2)不同点:他们的不同点主要是bindtap是冒泡的(事件绑定不会阻止冒泡事件向上冒泡),catchtap是非冒泡的(事件绑定可以阻止冒泡事件向上冒泡)。
(1)target在事件流的目标阶段;currentTarget在事件流的捕获,目标及冒泡阶段。
(2)但事件流处于目标阶段,target与currentTarget指向一样, 而当处于捕获和冒泡阶段的时候,target指向被单击的对象而currentTarget指向当前事件活动的对象。
(3)在微信小程序中也可总结为:target指向发生事件的组件,currentTarget指向绑定事件的组件。
后续继续补充 o ~~~