#javascript #date #vue.js #reactive-programming
#javascript #Дата #vue.js #реактивное программирование
Вопрос:
Довольно начинающий вопрос, но я нигде не мог найти решения.
У меня есть 2 кнопки, которые увеличивают / уменьшают заданный объект даты на /- 1 день. Объект обновляется, но изменения не отображаются. Я узнал, что это потому, что объект Date Obj не реагирует, но я не нашел решения или обходного пути для этого.
HTML:
<div id="app">
<button @click="inc"> 1 day</button>
<button @click="dec">- 1 day</button>
<br /><br />
{{date}}
</div>
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)
}
}
})
В консоли дата увеличивается / уменьшается нормально, но дата, отображаемая на странице, остается неизменной. Кто-нибудь может помочь с этим? Спасибо.
Ответ №1:
Вы изменяете 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)
}
}
})
Комментарии:
1. Оооо, так просто. Большое спасибо, работает как шарм, и вы сэкономили мне часы проб и ошибок