uniAPP开发中遇到this的指向错误问题
来源:直接复制网 时间:11-20
在制作扫一扫功能时候,遇到这样的一个错误。thirdScriptError,undefined is not an object (evaluating 'this.netInfo = res.result');at App onError function;at api scanCode success callback function
就是不能用this给变量赋值。
原因:
success方法指向闭包,所以this属于闭包,由此在success回调函数里是不能直接使用this.netInfo的。
解决办法:
1)在闭包之外先把this赋值给另一个变量。
- scanCode(){
- var that=this;
- uni.scanCode({
- onlyFromCamera: true,
- success:function (res){
- console.log('条码类型:' + res.scanType);
- console.log('条码内容:' + res.result);
- console.log("res"+ res)
- that.netInfo = res.result;
- }
- });
- }
2)使用箭头函数
- scanCode(){
- uni.scanCode({
- onlyFromCamera: true,
- success:(res)=>{
- console.log('条码类型:' + res.scanType);
- console.log('条码内容:' + res.result);
- console.log("res"+ res)
- this.netInfo = res.result;
- }
- });
- }