微信小程序踩坑记
1.点击事件传参
<view class="btn" bindtap="tapNav" data-nav="1">
111111
</view>
<view class="btn" bindtap="tapNav" data-nav="1">
111111
<view data-nav="2">2222</view>
</view>
点击事件返回对象:
"currentTarget": { // 事件绑定的当前元素
"dataset": {
"nav":"1"
}
},
"target": { // 触发事件的源元素
"dataset": {
"nav":"2"
}
}
如果在父元素上绑定了事件并传参,那么当点击父元素时,事件绑定的组件和触发事件的源组件是同一个元素,所以 currentTarget 、target 都可以拿到参数。但是当点击子元素时,target 就不是事件绑定的组件了,所以拿不到参数。 由于事件冒泡的机制,父元素上绑定的事件依然可以触发,因此 currentTarget 依然可以拿到参数。
2.view 标签不识别 ‘/n’ 换行符,需要用 text 标签。text 与 view 组件的主要区别是:除了text 节点以外
的其他节点都无法长按选中。
3.引用本地图片时,相对地址写错开发工具不会报错显示正常,真机不显示图片但也不报错。wx.previewImage
打开网络图片时,需要带上协议头才能预览,并且不支持 gif 动图。
4.视频组件的层级最高,建议不要在一个 scroll-view 内使用多个 video ,样式会错位。
5.Unexpected EOF … page-frame.html
这是因为后台返回的数据中带有特殊字符,导致读取时出错。
参考文档:http://www.cnblogs.com/rrooyy/p/5349978.html
该问题只需后台将特殊字符去除即可。
6.页面跳转
使用微信自带底部导航栏时,如果需要切换 tab ,不能使用 wx.navigateTo
跳转到其中的标签页,需要使用 wx.switchTab
来进行切换。
7.报错 request: fail ssl hand shake error
证书原因,一般是因为设置了代理,关闭代理即可。
8.登录失效后,需要重新 wx.login()
并且重新获取用户信息用来更新 iv, encrytedData
。这是因为每次调用 wx.login()
会导致微信服务器更新session_key
,导致解密失败,因此需要获取新的 iv, encrytedData
。
9.wx.request()
返回的状态码 res.statusCode
的值在 iOS 下是 int 型数据,而在 Android 6.0.1 上却是 String 型数据。
```
wx.request({
url: 'http://api.example.com',
success: function (res) {
if (res.statusCode === 200) {
// success
} else {
// server failure
}
}
})
```
上述代码就踩坑了,正确的做法是使用 ==
而不是使用 ===
来判断。另外一个更规范的方法是使用 parseInt(res.statusCode) === 200
来实现。
10.wx.uploadFile
域名需要在公众平台配置,如果用 post 请求返回的 json 并不是 object类型,前端需要用 JSON.parse
转化,wx.request
的返回则正常,为 object 类型。