在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 相关文章推荐
JavaScript实际应用:innerHTMl和确认提示的使用
Jun 22 Javascript
简单几行JS Code实现IE邮件转发新浪微博
Jul 03 Javascript
js中的屏蔽的使用示例
Jul 30 Javascript
js判断60秒以及倒计时示例代码
Jan 24 Javascript
JavaScript组件开发完整示例
Dec 15 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
Feb 19 Javascript
jQuery的实例及必知重要的jQuery选择器详解
May 20 Javascript
Dojo获取下拉框的文本和值实例代码
May 27 Javascript
Bootstrap table使用方法总结
May 10 Javascript
ionic选择多张图片上传的示例代码
Oct 10 Javascript
Django+vue跨域问题解决的详细步骤
Jan 20 Javascript
Node实现搜索框进行模糊查询
Jun 28 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的memory_limit限制的方法分享
2012/02/21 PHP
PHP的加密方式及原理
2012/06/14 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
iView框架问题整理小结
2018/10/16 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
Python中的asyncio代码详解
2019/06/10 Python
python异常触发及自定义异常类解析
2019/08/06 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
运动会四百米广播稿
2014/01/19 职场文书
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
六年级数学教学反思
2016/02/16 职场文书