解决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 相关文章推荐
Gird事件机制初级读本
Mar 10 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
Sep 29 Javascript
JavaScript实现GriwView单列全选(自写代码)
May 13 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
May 27 Javascript
js中onload与onunload的使用示例
Aug 25 Javascript
将字符串中由空格隔开的每个单词首字母大写
Apr 06 Javascript
写给小白的JavaScript引擎指南
Dec 04 Javascript
如何利用AngularJS打造一款简单Web应用
Dec 05 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 Javascript
jQuery时间戳和日期相互转换操作示例
Dec 07 jQuery
超详细的5个Shell脚本实例分享(值得收藏)
Aug 15 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
Dec 02 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
SSI指令
2006/11/25 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
四个PHP非常实用的功能
2015/09/29 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
javascript 文档的编码问题解决
2009/03/01 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
2017/06/12 jQuery
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
微信小程序单选框自定义赋值
2020/05/26 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
Python异常处理例题整理
2019/07/07 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
大专生自荐信
2013/10/04 职场文书
优秀毕业生自我鉴定
2014/01/19 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
小学教育见习报告
2014/10/31 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
离婚答辩状范文
2015/05/22 职场文书
合同范本之电脑出租
2019/08/13 职场文书