在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 相关文章推荐
一些mootools的学习资源
Feb 07 Javascript
一个javascript图片阅览组件
Nov 09 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
Dec 28 Javascript
jQuery获取select选中的option的value值实现方法
Aug 29 Javascript
javascript循环链表之约瑟夫环的实现方法
Jan 16 Javascript
如何用js判断dom是否有存在某class的值
Feb 13 Javascript
完美实现js焦点轮播效果(一)
Mar 07 Javascript
微信小程序wx.previewImage预览图片实例详解
Dec 07 Javascript
JS实现百度网盘任意文件强制下载功能
Aug 31 Javascript
layui自己添加图片按钮并点击跳转页面的例子
Sep 14 Javascript
js实现转动骰子模型
Oct 24 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
Dec 10 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
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
thinkphp框架实现数据添加和显示功能
2016/06/29 PHP
js setattribute批量设置css样式
2009/11/26 Javascript
jQuery实现id模糊查询的小例子
2013/03/19 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
实例解析ES6 Proxy使用场景介绍
2018/01/08 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
2018/05/31 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
Python中使用asyncio 封装文件读写
2016/09/11 Python
详解python 注释、变量、类型
2018/08/10 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
python爬虫之自制英汉字典
2019/06/24 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
Python虚拟环境venv用法详解
2020/05/25 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
优秀应届本科生求职信
2014/07/19 职场文书
初婚未育证明样本
2014/10/24 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
2014年团总支工作总结
2014/11/21 职场文书
嘉宾邀请函
2015/01/31 职场文书
计划生育工作总结2015
2015/04/03 职场文书
餐馆开业致辞
2015/08/01 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS