解决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 相关文章推荐
JQuery 常用方法基础教程
Feb 06 Javascript
Javascript学习笔记 delete运算符
Sep 13 Javascript
再谈javascript面向对象编程
Mar 18 Javascript
js用拖动滑块来控制图片大小的方法
Feb 27 Javascript
解决jQuery使用JSONP时产生的错误
Dec 02 Javascript
JavaScript新增样式规则(推荐)
Jul 19 Javascript
vue分页组件table-pagebar使用实例解析
Nov 15 Javascript
canvas的神奇用法
Feb 03 Javascript
CountUp.js实现数字滚动增值效果
Oct 17 Javascript
JS如何把字符串转换成json
Feb 21 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
Jul 21 Javascript
jquery实现加载更多"转圈圈"效果(示例代码)
Nov 09 jQuery
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
基于文本的留言簿
2006/10/09 PHP
PHP return语句的另一个作用
2014/07/30 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
Javascript 读后台cookie代码
2008/09/15 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
python 常用的基础函数
2018/07/10 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
Django 大文件下载实现过程解析
2019/08/01 Python
Python3的socket使用方法详解
2020/02/18 Python
Python多线程thread及模块使用实例
2020/04/28 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
销售人员获奖感言
2014/02/05 职场文书
条幅标语大全
2014/06/20 职场文书
2014年城管工作总结
2014/11/20 职场文书
如何撰写促销方案?
2019/07/05 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS