在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 相关文章推荐
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
Aug 15 Javascript
关于jQuery UI 使用心得及技巧
Oct 10 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
Mar 25 Javascript
jQuery 获取和设置select下拉框的值实现代码
Nov 08 Javascript
关于js内存泄露的一个好例子
Dec 09 Javascript
使表格的标题列可左右拉伸jquery插件封装
Nov 24 Javascript
jQuery轮播图效果精简版完整示例
Sep 04 Javascript
node.js学习之交互式解释器REPL详解
Dec 08 Javascript
Vue注册组件命名时不能用大写的原因浅析
Apr 25 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
Oct 11 Javascript
ES2020 已定稿,真实场景案例分析
May 25 Javascript
原生JavaScript实现幻灯片效果
Feb 19 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 visitFile()遍历指定文件夹函数
2010/08/21 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
JavaScript中的Document文档对象
2008/01/16 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
python 字典的打印实现
2019/09/26 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
优秀学生获奖感言
2014/02/15 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
2014年材料员工作总结
2014/11/19 职场文书
八月一日观后感
2015/06/10 职场文书
关于分班的感言
2015/08/04 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers
Python Matplotlib绘制条形图的全过程
2021/10/24 Python
总结高并发下Nginx性能如何优化
2021/11/01 Servers