elv*_*eti 3 javascript date reactive-programming vue.js
而是初学者的问题,但我在任何地方都找不到解决方案。
我有 2 个按钮可以将给定的 Date 对象增加/减少 +/- 1 天。对象已更新,但未显示更改。我发现这是因为 Date Obj 不是反应式的,但我没有找到解决方案或解决方法。
HTML:
<div id="app">
<button @click="inc">+ 1 day</button>
<button @click="dec">- 1 day</button>
<br /><br />
{{date}}
</div>
Run Code Online (Sandbox Code Playgroud)
JS/Vue:
new Vue({
el: "#app",
data: {
date: new Date()
},
methods: {
inc () {
this.date.setDate(this.date.getDate() + 1)
console.log(this.date)
},
dec () {
this.date.setDate(this.date.getDate() - 1)
console.log(this.date)
}
}
})
Run Code Online (Sandbox Code Playgroud)
在控制台中,日期可以很好地增加/减少,但页面上呈现的日期保持不变。有人可以帮忙吗?谢谢。
您正在修改date对象,在这种情况下 Vue 无法检测到更改,而是创建一个新的日期对象:
https://jsfiddle.net/13gzu8xs/1/
new Vue({
el: "#app",
data: {
date: new Date()
},
methods: {
inc () {
this.date.setDate(this.date.getDate() + 1)
this.date = new Date(this.date) // create a new date and assign to this.date
},
dec () {
this.date.setDate(this.date.getDate() - 1)
this.date = new Date(this.date)
}
}
})
Run Code Online (Sandbox Code Playgroud)