91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

解決this調用無效的問題

發布時間:2020-08-12 11:55:28 來源:億速云 閱讀:574 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關解決this調用無效的問題,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

let self = this //使用新變量替換this,以免this無效

//updateStudentInfoToServer是一個將本身部分數據異步上傳的接口,接收三個參數,其中第一個是數據,第二、三個是函數,第二、三個函數使用function(){}形式書寫

updateStudentInfoToServer:function(data, networkOk, networkError){
 let postData = this.$qs.stringify({
  data:data
 })
 
 this.axios.post('/api/update/updateStudentInfo',
  postData
 ).then(res=>{
  console.log(' return : ')
  console.log(res)
  networkOk(res) //網絡成功的回調
 
 }).catch(error=>{
  console.log(error)
  networkError(error) //網絡失敗的回調
 }) 
 
 console.log('axios done')
}, 
 
this.updateStudentInfoToServer(data, function(res){
  console.log('return ok')
  console.log(res)
  // console.log('self')
  // console.log(self) //就是this
  // console.log('this')
  // console.log(this) //undefined
 
  self.handleCancelEdit()
 },function(error){
  console.log(error)
 }
 
)

提交網絡數據是異步調用,所以會先返回然后才執行成功、失敗的回調。

這種書寫方式,function的作用于決定了function的代碼塊內使用this無法改變、獲取vue data中設置的變量

使用es6的箭頭語法可以實現this的隨處調用

this.updateStudentInfoToServer(this, res=>{
  console.log('return ok')
  console.log(res)
  console.log('self')
  console.log(self)
  console.log('this')
 
  console.log(this)//this和self一樣
 
 }, error=>{
  console.log(error)
 }
)

不過某些瀏覽器的某些版本不支持es6的語法,可能導致各種各樣的問題

補充知識:vue在全局函數中加回調,調用vue文件中的函數

全局函數可以寫一個文件globalFunc.js

exports.install = function(Vue, option){
 Vue.prototype.setData = function(that, key){
 that[key] = '222'
 }
 
 Vue.prototype.testCallMe = function(str){
 console.log('test call me' + str)
 }
 
 Vue.prototype.testCallBack = function(func, param){
 func(param)
 this.testCallMe('tetetet')
 }
}

main.js

import globalFunc from '@/components/globalFunc'

Vue.use(globalFunc)

vue文件中

調用

this.testCallBack(this.test, 'yui0')//使用全局函數調用vue文件中的函數,修改vue文件中的數據

this.setData(this, 'msg')//使用全局函數修改vue文件中的數據

test函數編寫

test:function(str){
 this.msg = '233' + str
}, 

關于解決this調用無效的問題就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

普陀区| 温泉县| 绍兴县| 莱西市| 永登县| 林口县| 永新县| 江口县| 琼海市| 陆丰市| 洛阳市| 文水县| 兴海县| 红河县| 京山县| 航空| 高州市| 塔河县| 疏附县| 望城县| 泰顺县| 凯里市| 齐河县| 皋兰县| 微山县| 荥经县| 昔阳县| 分宜县| 富顺县| 华亭县| 广宗县| 高阳县| 杭锦旗| 长春市| 临猗县| 绥芬河市| 牡丹江市| 安吉县| 乐亭县| 滦南县| 沙洋县|