问题概述:
在uniapp中使用uni.scanCode API进行扫描,将扫描结果赋值给this.xxx 到input框时会发现回显不上去;
原因:
在uniapp中,uni.scanCode是一个异步操作,而双向绑定通常需要同步更新。当你在回调函数中使用this时,由于回调函数的上下文环境已经改变,所以this可能不再指向你期望的对象;
解决办法:
可以使用箭头函数或者将回调函数中的this保存到一个变量中,然后在回调函数内部使用这个变量来访问正确的对象如下:
methods: {
scanCode() {
uni.scanCode({
success: (res) => {
// 使用箭头函数,此时this指向当前实例
this.setData(res.result);
},
fail: (err) => {
console.error('扫描失败', err);
}
});
},
setData(value) {
this.scanResult = value; // 更新scanResult的值
}
}
或者:
methods: {
scanCode() {
let _this = this;
console.log('条码res:');
uni.scanCode({
success: function (res) {
console.log('条码res:', res.result);
_this.batchNo = res.result;
}
});
}
},