鍍金池/ 問答/HTML/ js中this指向問題

js中this指向問題

fileChange(el) {
      if (!el.target.files[0].size) return;
      // this.fileList(el.target);
      let file = el.target.files[0];
      let oFReader = new FileReader();
      oFReader.readAsDataURL(file);
      oFReader.onload = function(oFREvent) {
        // console.log(oFREvent.target.result); //base64
        this.upImgLUrl = oFREvent.target.result;
      };
      el.target.value = ''
      console.log(this.upImgLUrl);
    },

這里怎么把oFREvent.target.result傳出去到全局?
console.log(this.upImgLUrl);打印出來是空

回答
編輯回答
毀了心

你后邊 console.log(this.upImgLUrl);肯定打印不出來的,首先oFReader.onload 你可以把它看做是一個(gè)異步事件,在外面直接獲取是獲取不了onload 里面的賦值的,你可以在onload 里面賦值后調(diào)用函數(shù)把oFREvent.target.result傳給函數(shù),然后在函數(shù)里面獲取

    function fileChange(el) {
            let file = el.target.files[0];
            let oFReader = new FileReader();
            oFReader.readAsDataURL(file);
            oFReader.onload = function(oFREvent) {
               //console.log(oFREvent.target.result); //base64
              var upImgLUrl = oFREvent.target.result;
                aaa(upImgLUrl);
            };
            el.target.value = '';           
          }
          function aaa(url){
              console.log(url)
          }
2018年2月17日 02:05
編輯回答
心上人

異步 外面聲明 let that = this

或者簡(jiǎn)單粗暴 存到sessionStorage里面 外面獲取
window.sessionStorage.setItem //存
window.sessionStorage.getItem //獲取

2017年4月12日 06:20
編輯回答
入她眼

改用箭頭函數(shù)

oFReader.onload = (oFREvent)=> {
    // console.log(oFREvent.target.result); //base64
    this.upImgLUrl = oFREvent.target.result;
  };
2018年5月29日 16:28