在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 相关文章推荐
jQuery之浮动窗口实现代码(两种方法)
Sep 08 Javascript
artDialog双击会关闭对话框的修改过程分享
Aug 05 Javascript
删除节点的jquery代码
Jan 13 Javascript
二叉树的非递归后序遍历算法实例详解
Feb 07 Javascript
jquery操作checkbox示例分享
Jul 21 Javascript
JS中捕获console.log()输出的方法
Apr 16 Javascript
PHP获取当前页面完整URL的方法
Dec 02 Javascript
AngularJS前端页面操作之用户修改密码功能示例
Mar 27 Javascript
详解Angular系列之变化检测(Change Detection)
Feb 26 Javascript
JS面向对象的程序设计相关知识小结
May 26 Javascript
taro开发微信小程序的实践
May 21 Javascript
js 实现watch监听数据变化的代码
Oct 13 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
重置版宣传动画
2020/04/09 魔兽争霸
php文件上传表单摘自drupal的代码
2011/02/15 PHP
开源php中文分词系统SCWS安装和使用实例
2014/04/11 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
layer弹出层全屏及关闭方法
2018/08/17 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
Python subprocess模块学习总结
2014/03/13 Python
跟老齐学Python之变量和参数
2014/10/10 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
Python新手学习标准库模块命名
2020/05/29 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
春风行动实施方案
2014/03/28 职场文书
疾病捐款倡议书
2014/05/13 职场文书
课题研究阶段性总结
2015/08/13 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS