连接蓝牙后,监听蓝牙连接状态的改变事件
返回上一页,再进入蓝牙连接页面,手动关闭蓝牙连接
如果在第一次进入连接页面,没有返回上一页,手动断开蓝牙连接,在wx.onBLEConnectionStateChange方法是可以获取到更新的值
wx.onBLEConnectionStateChange()方法在第一次进入页面执行一次,返回上一页,再进入蓝牙连接页面不会在调用wx.onBLEConnectionStateChange()方法,手动断开蓝牙连接,怎么解决在wx.onBLEConnectionStateChange方法里面不能获取this.data数据更新问题,this?
关键点是在进入蓝牙连接页面不执行wx.onBLEConnectionStateChange方法监听了,不能正确找到页面this问题?
Page({
data: {
reConnected: true //默认值
},
// 监听蓝牙状态改变
onBLEConnectionStateChange() {
wx.onBLEConnectionStateChange(res => {
this.setData({
//测试发现页面数据也不会更新
})
console.log(this.data.reConnected) //true 输出没有改变,导致执行了重新连接
if (!res.connected && this.data.reConnected) {
//重新连接逻辑,断开连接和this.data.reConnected状态是重新连接才执行
}
})
},
//断开蓝牙连接
closeBLEConnection() {
this.data.reConnected = false //改变值,不重新连接状态
wx.closeBLEConnection({
deviceId,
success: res => {
console.log(res, '断开蓝牙连接成功')
},
fail: err => {
console.log(err, '断开蓝牙连接失败')
}
})
}
})
试试这个,外层套个 var that = this;
onBLEConnectionStateChange(){ var that = this; wx.onBLEConnectionStateChange(function(res) { console.log(that.data.reConnected) }) }
wx.onBLEConnectionStateChange多次调用, 只有最后一次的回调才会触发, 这是不是个问题
wx.onBLEConnectionStateChange()方法在第一次进入页面执行一次,返回上一页,再进入蓝牙连接页面不会在调用wx.onBLEConnectionStateChange()方法
------想要再次进入蓝牙页面调用wx.onBLEConnectionStateChange()方法的话,就要把这个方法写在onshow生命周期函数里面,这样每次回到这个页面到会调用。
你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
麻烦复现问题的时候,在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点(具体到分钟)