这太疯狂了,不是吗?!如果我直接访问离开的人,我会得到2016-05-18的正确值。
console.log(searchFactory.search.searchparams.journeys[0].departuredate); // 2016-05-18
console.log(searchFactory.search.searchparams.journeys[0] //stored in the object as 2010-05-10
但是,如果我将console.log()整个对象与附加的屏幕截图相同,则会重置为今天的日期。这怎么可能呢?最终价值被分配给我的工厂,最终到2016-05-10 - 今天。在某个地方,日期变得更新到今天的日期,对于我的生活,我不明白如何。
$scope.$watch('date', function(newDate) {
searchFactory.search.searchparams.journeys[0].departuredate = moment(newDate.startDate).format("YYYY-MM-DD");
searchFactory.search.searchparams.journeys[0].returndate = moment(newDate.endDate).format("YYYY-MM-DD");
console.log(searchFactory.search.searchparams.journeys[0]);
});
我疯了,试图解决这个问题。
基本上我正在观看日期范围项目,这一切都很好。然后将newDate分配给我的工厂进行存储和以后的使用。如您所见,我只是记录对象以查看值。你可以在屏幕截图中看到它是如何带有两个不同的值......我相信这是不可能的,直到现在。
任何指针都将不胜感激。
答案 0 :(得分:2)
这是webkit中的一个known bug,4年后还没有打到chrome。
截至今天,将对象(数组)转储到控制台将导致对象的属性存在 读取控制台对象扩展(即懒惰)。这意味着同时转储同一个对象 使用控制台调试很难调试。
此更改开始生成对象/数组的缩写预览 记录并将此信息传递到前端。这只发生在前端 已经打开,它只适用于console.log(),而不适用于实时控制台交互。
见here。
You can use obj.toString()
同时按照您的意图进行记录。