在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中引用百度地图并将百度地图的logo和信息去掉
Sep 29 Javascript
JavaScript中this的使用详解
Nov 08 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
Nov 14 Javascript
聊一聊JavaScript作用域和作用域链
May 03 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
Sep 27 Javascript
详解javascript表单的Ajax提交插件的使用
Dec 29 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
Jul 12 jQuery
通过js控制时间,一秒一秒自己动的实例
Oct 25 Javascript
mui上拉加载更多下拉刷新数据的封装过程
Nov 03 Javascript
vue-cli初始化项目中使用less的方法
Aug 09 Javascript
ES6 class的应用实例分析
Jun 27 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
Mar 17 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+croppic.js实现剪切上传图片功能
2018/08/14 PHP
jQuery 常见学习网站与参考书
2009/11/09 Javascript
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
浅谈javascript错误处理
2019/08/11 Javascript
layui layer select 选择被遮挡的解决方法
2019/09/21 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
2020/11/02 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
对python判断是否回文数的实例详解
2019/02/08 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
Python自动化操作实现图例绘制
2020/07/09 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
网络安全方面的面试题
2016/01/07 面试题
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
什么是servlet链?
2014/07/13 面试题
行政助理的职责
2013/11/14 职场文书
党支部书记先进事迹
2014/01/17 职场文书
农贸市场管理制度
2014/01/31 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL