在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多级树形弹出一个小窗口层(非常好用)实例代码
Mar 19 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
Jun 26 Javascript
仿百度的关键词匹配搜索示例
Sep 25 Javascript
jquery.validate.js插件使用经验记录
Jul 02 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
Aug 27 Javascript
JavaScript定时显示广告代码分享
Mar 02 Javascript
JS中的eval 为什么加括号
Apr 13 Javascript
AngularJs expression详解及简单示例
Sep 01 Javascript
微信小程序 数据封装,参数传值等经验分享
Jan 09 Javascript
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
layui实现table加载的示例代码
Aug 14 Javascript
vue使用pdfjs显示PDF可复制的实现方法
Dec 14 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
新安装的MySQL数据库需要注意的安全知识
2008/07/30 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
2014/12/31 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
php使用递归与迭代实现快速排序示例
2014/01/23 Python
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
Python 中的lambda函数介绍
2018/10/10 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
python实现桌面托盘气泡提示
2019/07/29 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
python中upper是做什么用的
2020/07/20 Python
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
实习护理工作自我评价
2013/09/25 职场文书
英语专业毕业生自荐信
2013/10/28 职场文书
上学迟到的检讨书
2014/01/11 职场文书
大学生的创业计划书就该这么写
2014/01/30 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
如何用python反转图片,视频
2021/04/24 Python
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python
python使用pymysql模块操作MySQL
2021/06/16 Python
Python各协议下socket黏包问题原理
2022/04/12 Python