为什么在观看Moment.js时Vue.js为什么不进行更改?

时间:2018-07-03 00:19:41

标签: vue.js momentjs

在这里,这个问题Vuejs: Computed property not updating the view,我正在监视moment.js实例的更改,并且视图不会更新。

这是无效的原始代码的摘录:

set(value) {
    this.paidFinish = this.paidFinish.hour(value);
}

这是我要解决的问题:

set(value) {
    this.paidFinish = this.paidFinish.clone().hour(value);
}

为什么Vuejs无法检测到更改?正在通过this访问该对象,并且初始数据中存在属性paidFinish。 (最初将其设置为'',但是在安装组件时将其设置为片刻。)

1 个答案:

答案 0 :(得分:0)

遇到同样的问题。

结果是the moment object mutates and always returns the same object,因此Vue无法为其添加反应性(有关此说明,请参见the docs)。

解决方法是使用frozen-moment库或在组件中创建间隔:

data () {
  return {
    time: ''
  }
},
beforeMount () {
  setInterval(() => {
    this.time = moment().format('HH:mm:ss')
  }, 1000)
}

或者...

  

使用不可变的date-fns