解决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 相关文章推荐
[JS源码]超长文章自动分页(客户端版)
Jan 09 Javascript
brook javascript框架介绍
Oct 10 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
Oct 10 Javascript
浅谈js中对象的使用
Aug 11 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
Jan 22 Javascript
JavaScript轻松创建级联函数的方法示例
Feb 10 Javascript
激动人心的 Angular HttpClient的源码解析
Jul 10 Javascript
JS手机端touch事件计算滑动距离的方法示例
Oct 26 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
Dec 07 Javascript
Koa2 之文件上传下载的示例代码
Mar 29 Javascript
Vue核心概念Action的总结
Jan 18 Javascript
如何通过Proxy实现JSBridge模块化封装
Oct 22 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
简单采集了yahoo的一些数据
2007/02/14 PHP
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
php在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
js select option对象小结
2013/12/20 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
浅析Python中的for 循环
2016/06/09 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
Python os.access()用法实例
2019/02/18 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
用pycharm开发django项目示例代码
2019/06/13 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
泰国在线书店:SE-ED
2020/06/21 全球购物
超市活动计划书
2014/04/24 职场文书
法制宣传月活动总结
2014/04/29 职场文书
社团活动总结书
2014/06/27 职场文书
争当四好少年演讲稿
2014/09/13 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
消防安全月活动总结
2015/05/08 职场文书
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis
A22国内电台短波广播频率表
2022/05/10 无线电