在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 相关文章推荐
jquery中的sortable排序之后的保存状态的解决方法
Jan 28 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
Aug 24 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
Oct 17 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
Javascript writable特性介绍
Feb 27 Javascript
Angular工具方法学习
Dec 26 Javascript
jQuery.form.js的使用详解
Jun 14 jQuery
vue动画之点击按钮往上渐渐显示出来的实例
Sep 29 Javascript
vue中node_modules中第三方模块的修改使用详解
May 31 Javascript
解决vue v-for src 图片路径问题 404
Nov 12 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
Jun 04 Javascript
解决vue-router 嵌套路由没反应的问题
Sep 22 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中实现记住密码自动登录的代码
2011/03/02 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
JavaScript学习笔记(十)
2010/01/17 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
用Python编程实现语音控制电脑
2014/04/01 Python
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
Python多层装饰器用法实例分析
2018/02/09 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
俄罗斯天然和有机产品、健康生活网上商店:Fitomarket.ru
2020/10/09 全球购物
C#的几个面试问题
2016/05/22 面试题
大学生个人推荐信范文
2013/11/25 职场文书
学习礼仪心得体会
2014/09/01 职场文书
皇城相府导游词
2015/02/06 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
2016天猫双十一广告语
2016/01/28 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript
Nginx HTTP跳转至HTTPS
2022/05/15 Servers