Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 监视更改并使用日期对象更新格式化视图_Javascript_Vuejs2 - Fatal编程技术网

Javascript 监视更改并使用日期对象更新格式化视图

Javascript 监视更改并使用日期对象更新格式化视图,javascript,vuejs2,Javascript,Vuejs2,我想在这几天里做一次导航。所以我需要两个按钮“上一天”和“下一天”来更改格式化日期 [ <<PREV ] DD-MM-YYY (weekday) [ NEXT >> ] .container{ 垫面:2rem; } .栏目{ 文本对齐:居中; } 编号:{{number} 上 数据:{day} 计算:{{dateformatted} 方法:{{showFormattedDate(day)} 监视:{{dayFormatted} 下一个 这实际上是我第一次使用

我想在这几天里做一次导航。所以我需要两个按钮“上一天”和“下一天”来更改格式化日期

[ <<PREV ]    DD-MM-YYY (weekday)   [ NEXT >> ]
.container{
垫面:2rem;
}
.栏目{
文本对齐:居中;
}

编号:{{number}
上
数据:
{day} 计算:
{{dateformatted} 方法:
{{showFormattedDate(day)} 监视:
{{dayFormatted} 下一个
这实际上是我第一次使用Vue

我添加到您的DEP中是因为它可以方便地按照您想要的方式格式化日期

我想我已经把它简化为一个相当简单的解决方案。当我将日期存储为矩对象时(即使使用
this.$set(this,'date',this.date.add(1,'day')
或添加一个deep watcher),我确实遇到了一个问题,Vue没有对日期更改做出反应,因此我放弃了这种方法,而是将日期存储为unix时间戳(历元秒),这很好:

let app=new Vue({
el:“应用程序”,
数据:{
日期:moment().startOf('day').unix()
},
方法:{
日期字符串:函数(){
return moment.unix(this.date).format('DD-MM-YYYY(dddddd)');
},
上一个:函数(){
this.date=moment.unix(this.date).subtract(1,'day').unix();
},
下一步:函数(){
this.date=moment.unix(this.date).add(1,'day').unix();
}
}
});
.container{
垫面:2rem;
}
.栏目{
文本对齐:居中;
}

上
{{dateString()}}
下一个

它不起作用,beucase Vue不监视对象内部的突变()

这两行改变了对象
day
,但Vue看不到更改,因为对对象的引用(
this.day
)保持不变:

this.day.setDate(this.day.getDate() - 1);
this.day.setDate(this.day.getDate() + 1);
如果您将其更改为分配新对象,它将起作用,因为现在对
this.day
的引用已更改,并且Vue注意到更改的值:

this.day = new Date(this.day.setDate(this.day.getDate() - 1));
this.day = new Date(this.day.setDate(this.day.getDate() + 1));

带有正确工作代码的钢笔。

谢谢您的回复。这个项目具有教育意义,所以这就是我要找的。