在vue中使用setInterval的方法示例


Posted in Javascript onApril 16, 2019

昨天在用vue开发项目的时候遇到一个坑,在群友的探讨中,成功的解决了这一问题。

具体情形如下:使用vue开发,在页面中有一个人数统计组件,人数统计是要动态变化数据的,由于目前没有真实数据,那么我想的是用随机数和setInterval来改变data里面的数据,从而做到数据实时变化,这样方便与我来做数字翻页动画。

代码如下:

<template>
  <div class="totel-number">
    <div class="panel-top">
      <div class="panel-top_Left"></div>
      <div class="panel-top_Text flex-center" >数量</div>
      <div class="panel-top_Right"></div>
    </div>
    <div class="panel-body">
      <div class="counter-wrap">
        <ul class="counter-board">
          <li class="num-board" v-for="item in totelNumber">
            <span class="num u">
              <i class="w">{{item}}</i>
            </span>
            <span class="num b">
              <i class="w">{{item}}</i>
            </span>
          </li>
        </ul>
      </div>
    </div>
    <i class="cc-Corner cc-C-t cc-C-l"></i>
    <i class="cc-Corner cc-C-t cc-C-r"></i>
    <i class="cc-Corner cc-C-b cc-C-r"></i>
    <i class="cc-Corner cc-C-b cc-C-l"></i>
  </div>
</template>
<script>
import $ from 'jquery'
import * as d3 from 'd3';
export default {
  data(){
    return {
      totelNumber: new Array(8)
    }
  },
  beforeMount() {
     //设置定时器,每3秒刷新一次
     var self = this;
     setInterval(getTotelNumber,1000)
     function getTotelNumber() {
       for(let i=0; i < self.totelNumber.length; i++){
         self.totelNumber[i] = Math.ceil(Math.random()*10) -1 
       }
     }
     getTotelNumber();   
  }
}
</script>

大家有发现问题吗?

在beforeMount里面console.log(this.totelNumber)会发现数据是在变化的,但是页面上是没有任何变化。

这是什么原因呢?

方法:先把问题分解开,就怀疑的几个点做正反的验证

在多次验证在多次验证和查看文档后强哥找到了:

需要注意的是有两种情况不会触发视图更新,需要换种变通写法:

- 当你利用索引直接设置一个项时,例如: vm.items[indexOfItem] = newValue
- 当你修改数组的长度时,例如: vm.items.length = newLength

更具这个思路我就明白了为什么会有这样的坑,然后就将代码进行了改进:

<script>
import $ from 'jquery'
import * as d3 from 'd3';
export default {
  data(){
    return {
      totelNumber: new Array(8)
    }
  },
  beforeMount() {
     //设置定时器,每3秒刷新一次
     var self = this;
     setInterval(getTotelNumber,1000)
     function getTotelNumber() {
       let newArray = new Array(8)
       for(let i=0; i < this.totelNumber.length; i++){
        newArray[i] = Math.ceil(Math.random()*10) -1
      }
      self.totelNumber = newArray
     }
     getTotelNumber();   
  }
}
</script>

如此一来就可将数据实时动态刷新呈现在页面上。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
关于JS控制代码暂停的实现方法分享
Oct 11 Javascript
JS定时器实例
Apr 17 Javascript
javascript 控制input只允许输入的各种指定内容
Jun 19 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
Mar 05 Javascript
Jquery attr()方法 属性赋值和属性获取详解
Apr 15 Javascript
客户端验证用户名和密码的方法详解
Jun 16 Javascript
jQuery 跨域访问解决原理案例详解
Jul 09 Javascript
基于Vuejs实现购物车功能
Aug 02 Javascript
javascript循环链表之约瑟夫环的实现方法
Jan 16 Javascript
深入理解vue中slot与slot-scope的具体使用
Jan 26 Javascript
jQuery实现的简单对话框拖动功能示例
Jun 05 jQuery
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
Jan 12 Javascript
vue实现局部刷新的实现示例
Apr 16 #Javascript
如何自动化部署项目?折腾服务器之旅~
Apr 16 #Javascript
每周一练 之 数据结构与算法(Stack)
Apr 16 #Javascript
在vue中获取微信支付code及code被占用问题的解决方法
Apr 16 #Javascript
JavaScript实现选项卡效果的分析及步骤
Apr 16 #Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
Apr 16 #Javascript
详解滑动穿透(锁body)终极探索
Apr 16 #Javascript
You might like
php echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
表单验证的完整应用案例探讨
2013/03/29 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
2013/04/01 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
javascript中动态加载js文件多种解决办法总结
2013/11/15 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
layui table 参数设置方法
2018/08/14 Javascript
Vue中props的详解
2019/05/16 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
python文件的md5加密方法
2016/04/06 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
django创建css文件夹的具体方法
2020/07/31 Python
python批量生成条形码的示例
2020/10/10 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
空指针到底是什么
2012/08/07 面试题
迎接领导欢迎词
2014/01/11 职场文书
网上卖盒饭创业计划书范文
2014/02/07 职场文书
职工运动会感言
2014/02/07 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python
Python中的socket网络模块介绍
2022/07/23 Python