• Ajax
  • Ant design
  • Axios-Fetch
  • Avue
  • Browser
  • Canvas
  • CSS
  • Dos-bat
  • Dva
  • Dedecms
  • Echart
  • ElementUI
  • Editors
  • Git
  • GeoServer
  • GIS
  • H5
  • Jquery
  • Java安卓
  • Json
  • Javascript
  • Leaflet
  • Linux
  • Life-Info
  • Mock
  • MongoDB
  • Network
  • NodeJS
  • NPM
  • React
  • 设计运营
  • SEO
  • SVG
  • TypeScript
  • Tools
  • umi
  • uni-APP
  • Vant
  • Vue
  • Windows
  • webpack
  • 位置:OC中文网 > 其他 > uni-APP >

    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赋值给另一个变量。

    1. scanCode(){ 
    2.  var that=this
    3.  uni.scanCode({ 
    4.     onlyFromCamera: true, 
    5.     success:function (res)
    6.         console.log('条码类型:' + res.scanType); 
    7.         console.log('条码内容:' + res.result); 
    8.         console.log("res"+ res) 
    9.         that.netInfo = res.result; 
    10.     } 
    11.  });     

    2)使用箭头函数

    1. scanCode(){ 
    2.  uni.scanCode({ 
    3.     onlyFromCamera: true, 
    4.     success:(res)=>
    5.         console.log('条码类型:' + res.scanType); 
    6.         console.log('条码内容:' + res.result); 
    7.         console.log("res"+ res) 
    8.         this.netInfo = res.result; 
    9.     } 
    10.  });