时间:2021-05-25
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},以上这篇在vue中使用回调函数,this调用无效的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
call_user_func_arraycall_user_func_array—调用回调函数,并把一个数组参数作为回调函数的参数mixedcall_user_
在性能方面考虑了由于连续触发onscroll事件,频繁调用回调函数而产生的性能问题。可以将回调函数缓存一段时候后执行,即当这段时间内多次触发了onscroll事
问题你想在C中安全的执行某个Python调用并返回结果给C。例如,你想在C语言中使用某个Python函数作为一个回调。解决方案在C语言中调用Python非常简单
创建一个Image对象,实现图片的预下载,如果图片已经存在于浏览器缓存,直接调用回调函数,使用onload事件可以判断图片是否加载完成functionloadI
在js异步请求数据时,通常,我们多采用回调函数的方式解决,但是,如果有多个回调函数嵌套时,代码显得很不优雅,维护成本也相应较高。ES6提供的Promise方法和