解决vue的变量在settimeout内部效果失效的问题


Posted in Javascript onAugust 30, 2018

解决方法如下:

1、定义一个self暂存this

2、再改变变量的值,则生效啦

var self=this;
    this.toastrVal = inVal;
    this.loadState = true;
    this.noBg = bgState;
    setTimeout(function () {
     self.loadState = false;
    }, 3000)

拓展知识:解决vue在setTimeout内修改this失效的问题

当在vue中使用定时器来修改一个变量值的时候,发现没有效果,这是由于setTimeout函数调用的代码运行在与所在函数完全分离的执行环境上,这会使得this指向的是window对象。

要想setTimeout指向正确的值,可以使用如下方法:

1、使用箭头函数

export default {
 data () {
  return {
   left: -9999,
   bottom: -9999
  }
 },
 methods: {
  cancelMask: function () {
   setTimeout(() => {
    this.bottom = 0;
    this.left = 0;
   }, 500);
  }
 }
}

此时函数的this指向的是定义它的时候的对象,也就是this指向了data内中对应的变量。

2、将当前对象的this保存为一个变量

export default {
 data () {
  return {
   left: -9999,
   bottom: -9999
  }
 },
 methods: {
  cancelMask: function () {
   var that = this;
   setTimeout(function () {
    that.bottom = 0;
    that.left = 0;
   }, 500);
  }
 }
}

方法中将this存在一个对象中,此时执行setTimeout函数时,setTimeout函数内的that就会访问到这个变量,就会得到当前对象。

以上这篇解决vue的变量在settimeout内部效果失效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 仿QQ滑动菜单效果代码
Sep 03 Javascript
javascript 闭包
Sep 15 Javascript
导航跟随滚动条置顶移动示例代码
Sep 11 Javascript
JS获取键盘上任意按键的值(实例代码)
Nov 12 Javascript
js中array的sort()方法使用介绍
Feb 20 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
Mar 14 Javascript
jQuery实现径向动画菜单效果
Jul 17 Javascript
Bootstrap栅格系统的使用和理解2
Dec 14 Javascript
Javascript网页抢红包外挂实现分享
Jan 11 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
Jul 23 jQuery
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
Nov 14 Javascript
Node.js API详解之 Error模块用法实例分析
May 14 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
Aug 30 #Javascript
详解React native fetch遇到的坑
Aug 30 #Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
Aug 30 #Javascript
原生JS实现简单的倒计时功能示例
Aug 30 #Javascript
JavaScript fetch接口案例解析
Aug 30 #Javascript
vue组件表单数据回显验证及提交的实例代码
Aug 30 #Javascript
原生JS实现的简单小钟表功能示例
Aug 30 #Javascript
You might like
php实现smarty模板无限极分类的方法
2015/12/07 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
基于javascript的Form表单验证
2016/12/29 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
vue二级菜单导航点击选中事件的方法
2018/09/12 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
Python打包可执行文件的方法详解
2016/09/19 Python
python 重命名轴索引的方法
2018/11/10 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
Python3进制之间的转换代码实例
2019/08/24 Python
python正则表达式匹配IP代码实例
2019/12/28 Python
python 回溯法模板详解
2020/02/26 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
python 追踪except信息方式
2020/04/25 Python
python是怎么被发明的
2020/06/15 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
佳能英国官方网站:Canon UK
2017/08/08 全球购物
农行实习自我鉴定
2013/09/22 职场文书
企业给企业的表扬信
2014/01/13 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
《小小的船》教学反思
2016/02/18 职场文书
新员工入职感言范文!
2019/07/04 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
Js类的构建与继承案例详解
2021/09/15 Javascript
Redis实战高并发之扣减库存项目
2022/04/14 Redis
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python