在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的执行效率一些方法总结
Dec 25 Javascript
jquery中map函数与each函数的区别实例介绍
Jun 23 Javascript
javascript动态创建链接的方法
May 13 Javascript
javascript实现动态改变层大小的方法
May 14 Javascript
Web Uploader文件上传插件使用详解
May 10 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
Jun 07 Javascript
JavaScript函数柯里化原理与用法分析
Mar 31 Javascript
详解webpack解惑:require的五种用法
Jun 09 Javascript
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
Dec 28 Javascript
Angular2中监听数据更新的方法
Aug 31 Javascript
微信小程序动态添加view组件的实例代码
May 23 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
Jun 24 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一些有意思的小区别
2006/12/06 PHP
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
用PHP生成html分页列表的代码
2007/03/18 PHP
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
2013/11/22 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
js new Date()实例测试
2019/10/31 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
银行奉献演讲稿
2014/09/16 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
逃课打麻将检讨书
2014/10/05 职场文书
宾馆安全管理制度
2015/08/06 职场文书
八年级历史教学反思
2016/02/19 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书
spring cloud 配置中心native配置方式
2021/09/25 Java/Android