国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

在vue中使用setInterval的方法示例

2019-11-19 11:46:17
字體:
供稿:網(wǎng)友

昨天在用vue開發(fā)項目的時候遇到一個坑,在群友的探討中,成功的解決了這一問題。

具體情形如下:使用vue開發(fā),在頁面中有一個人數(shù)統(tǒng)計組件,人數(shù)統(tǒng)計是要動態(tài)變化數(shù)據(jù)的,由于目前沒有真實數(shù)據(jù),那么我想的是用隨機數(shù)和setInterval來改變data里面的數(shù)據(jù),從而做到數(shù)據(jù)實時變化,這樣方便與我來做數(shù)字翻頁動畫。

代碼如下:

<template>  <div class="totel-number">    <div class="panel-top">      <div class="panel-top_Left"></div>      <div class="panel-top_Text flex-center" >數(shù)量</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>

大家有發(fā)現(xiàn)問題嗎?

在beforeMount里面console.log(this.totelNumber)會發(fā)現(xiàn)數(shù)據(jù)是在變化的,但是頁面上是沒有任何變化。

這是什么原因呢?

方法:先把問題分解開,就懷疑的幾個點做正反的驗證

在多次驗證在多次驗證和查看文檔后強哥找到了:

需要注意的是有兩種情況不會觸發(fā)視圖更新,需要換種變通寫法:

- 當你利用索引直接設置一個項時,例如: vm.items[indexOfItem] = newValue
- 當你修改數(shù)組的長度時,例如: 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>

如此一來就可將數(shù)據(jù)實時動態(tài)刷新呈現(xiàn)在頁面上。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 忻州市| 镇平县| 紫阳县| 东至县| 库车县| 池州市| 永顺县| 南开区| 和顺县| 乐陵市| 秭归县| 汪清县| 武胜县| 博湖县| 山阳县| 旬邑县| 淳化县| 思南县| 武平县| 峨边| 南乐县| 于都县| 开封市| 巴林左旗| 伊宁县| 宿迁市| 通山县| 泾川县| 长治市| 盘山县| 永靖县| 班玛县| 莫力| 尼木县| 桂阳县| 南皮县| 祁门县| 蕲春县| 盐边县| 三穗县| 万州区|