在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 相关文章推荐
JScript的条件编译
May 29 Javascript
子窗口、父窗口和Silverlight之间的相互调用
Aug 16 Javascript
jQuery学习笔记 操作jQuery对象 属性处理
Sep 19 Javascript
jQuery图片滚动图片的效果(另类实现)
Jun 02 Javascript
jQuery提交多个表单的小技巧
Jul 27 Javascript
jquery的幻灯片图片切换效果代码分享
Sep 07 Javascript
JavaScript设计模式初探
Jan 07 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
Aug 18 Javascript
vue获取当前点击的元素并传值的实例
Mar 09 Javascript
javascript中的数据类型检测方法详解
Aug 07 Javascript
layui type2 通过url给iframe子页面传值的例子
Sep 06 Javascript
vue 动态组件用法示例小结
Mar 06 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在各种web服务器的运行模式详解
2013/06/03 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
PHP中Closure类的使用方法及详解
2015/10/09 PHP
php简单实现数组分页的方法
2016/04/30 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
如何实现iframe(嵌入式帧)的自适应高度
2006/07/26 Javascript
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
jQuery实现行文字链接提示效果的方法
2015/03/10 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
python利用微信公众号实现报警功能
2018/06/10 Python
python3实现mysql导出excel的方法
2019/07/31 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
pycharm实现猜数游戏
2020/12/07 Python
为什么会有内存对齐
2016/10/10 面试题
JAVA软件工程师测试题
2014/07/25 面试题
调查研究项目计划书
2014/04/29 职场文书
部门活动策划方案
2014/08/16 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
MySQL慢查询优化解决问题
2022/03/17 MySQL
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS