關於vue的ajax中this作用域的問題


之前項目中踩過的坑分享一下,項目框架當時選用的vue,因為對ajax用法比較熟悉所以在vue中繼續使用ajax沒有使用axios,下面說遇到的問題以及解決辦法:

vue中ajax中this默認指向對象是vue本身,當然你如果想在全局使用就要先把this作用域提升到全局          

 

 let that = this;

 

按正常來講這時已經用這個that在ajax中取值傳給vue視圖了。

但是你會發現在vue中打印that是undefined,在ajax中this指向的是ajax本身。

解決方式:

methods: { 
    dataList() {
    var _self = this
        console.log(_self);//此處_self指向vue對象
        $.ajax({
           type: "post",
           url:url,
           async: true,
       data: {},
           dataType: "json",
       success: function(result) {
          _self.tableData = result;//這里的即為vue對象中tableData鍵值
          console.log(_self.tableData) 
      } }) } }

打印結果即為后端接口數據json對象。

最后一步

data() {
    return {
        tableData: this.tableData,
    }
}

分享為例,並不是完整代碼,有問題可以相互交流QAQ

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM