在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 相关文章推荐
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
Oct 12 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
Sep 15 Javascript
关于javascript event flow 的一个bug详解
Sep 17 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
Nov 07 Javascript
基于javascript实现彩票随机数生成(升级版)
Apr 17 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
May 27 Javascript
js仿百度音乐全选操作
Jan 13 Javascript
使用jquery给新生的th绑定hover事件的实例
Feb 10 Javascript
jQuery树插件zTree使用方法详解
May 02 jQuery
微信小程序日历效果
Dec 29 Javascript
jQuery表单选择器用法详解
Aug 22 jQuery
Vue监视数据的原理详解
Feb 24 Vue.js
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
ajax php 实现写入数据库
2009/09/02 PHP
PHP 八种基本的数据类型小结
2011/06/01 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
php 获取本地IP代码
2013/06/23 PHP
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
python实现的简单RPG游戏流程实例
2015/06/28 Python
pandas实现选取特定索引的行
2018/04/20 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
Django中的Model操作表的实现
2018/07/24 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
Java程序员面试题
2013/07/15 面试题
库房主管岗位职责
2013/12/31 职场文书
公务员考察材料
2014/12/23 职场文书
五年级下册复习计划
2015/01/19 职场文书
运动会开幕式主持词
2015/07/01 职场文书
新员工入职感言范文!
2019/07/04 职场文书
学生早退检讨书(范文)
2019/08/19 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js