在vue中使用回调函数,this调用无效的解决


Posted in Javascript onAugust 11, 2020

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调用无效的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Autocomplete Textbox Example javascript实现自动完成成功
Aug 17 Javascript
jQuery 获取URL的GET参数值的小例子
Apr 18 Javascript
jQuery的观察者模式详解
Dec 22 Javascript
js实现键盘自动打字效果
Dec 23 Javascript
jQuery基于ajax操作json数据简单示例
Jan 05 Javascript
Angular2使用Angular CLI快速搭建工程(一)
May 21 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
May 25 jQuery
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
May 26 jQuery
浅谈vue.use()方法从源码到使用
May 12 Javascript
echarts大屏字体自适应的方法步骤
Jul 12 Javascript
seajs和requirejs模块化简单案例分析
Aug 26 Javascript
vue实现轮播图帧率播放
Jan 26 Vue.js
vue 调用 RESTful风格接口操作
Aug 11 #Javascript
vue之封装多个组件调用同一接口的案例
Aug 11 #Javascript
vue接口请求加密实例
Aug 11 #Javascript
vue组件暴露和.js文件暴露接口操作
Aug 11 #Javascript
vue npm install 安装某个指定的版本操作
Aug 11 #Javascript
小程序自动化测试的示例代码
Aug 11 #Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
Aug 11 #Javascript
You might like
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
在模板页面的js使用办法
2010/04/01 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
ajax更新数据后,jquery、jq失效问题
2011/03/16 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
JavaScript中switch判断容易犯错的一个细节
2014/08/27 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
node.js如何根据URL返回指定的图片详解
2020/10/21 Javascript
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
python实现双色球随机选号
2020/01/01 Python
基于Python的Jenkins的二次开发操作
2020/05/12 Python
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
临床医学专业学生的自我评价分享
2013/11/21 职场文书
小学班主任寄语大全
2014/04/04 职场文书
小学一年级学生评语
2014/04/22 职场文书
民间个人借款协议书
2014/09/30 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
接待员岗位职责
2015/02/13 职场文书
工厂仓库管理员岗位职责
2015/04/09 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python