怎样保持vue-count-to插件在刷新后还能保持刷新前的值呢?

最近公司需要做一个数字滚动效果插件,于是我想到使用vue-count-to,但是在使用的过程中发现当页面刷新后,起始值startVal,要比刷新前的值要小。我想要的效果是:刷新后的值应该保持刷新前的值然后继续滚动。具体过程是这样的:
后端传初始值和最终值,滚动时间是按24小时计算,用户任何时候打开都是保持多个页面滚动的数字一致。
现在是我是计算差值在24小时中每秒滚动的速率,然后以此来计算countTo的初始值,但是当页面刷新后,滚动的初始值就会变小,所以我怀疑是vue-count-to滚动的速率不是按平均速率来计算的,那么怎么保持页面刷新后的值与刷新之前的值保持不变呢?当我将缓和功能useEasing设置成false时,数字不滚动,请问怎么回事?
以下是我的代码:

<countTo :separator='separator' :decimals='decimals' :startVal='startVal' :endVal='endVal' :duration='durationTime'></countTo>

import countTo from 'vue-count-to'

data(){
return{
      startDatas: 0,
      // 滚动数据
      separator: '',
      startVal: 10,
      endVal: 20,
      decimals: 2,
      durationTime: 5000,
}
}

 // 滚动效果数值计算
    getTimeDatas(start, end) {
      console.log(start, end, 2610)
      // 计算差值
      var res = Number(end - start)
      // 转化成毫秒
      var curTime = Number(this.configData.cur_time) * 1000
      // 计算秒的配速
      var speeds = res / 86400
      // 转化成时分秒
      var time = (this.$dateFmt(curTime, 'HH:mm:ss'))
      // 计算之前跑了多少值,初始值
      this.startVal = this.timeToSec(time) * speeds + start
      this.endVal = end
      console.log(this.startVal, this.endVal, 355)
      // 计算还剩多少时间
      this.durationTime = (86400 - this.timeToSec(time)) * 1000
    },
    // 时间转为秒
    timeToSec(time) {
      console.log(time, 333)
      var hour = time.split(':')[0]
      var min = time.split(':')[1]
      var sec = time.split(':')[2]
      var s = Number(hour * 3600) + Number(min * 60) + Number(sec)
      return s
    }
阅读 6k
1 个回答

缓存一下值就行了,可以使用计算属性计算值。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题