我是Vue.js的新手,试图了解计算值。特别是,我从我的REST API返回json数据,并且该数据是一个名为date的字段,处于unixtime(即1486231256
)。我想将该字段转换为人类可读,但应用程序正在返回invalid date
。这是我的代码:
<script>
import axios from 'axios'
import moment from 'moment'
export default {
data: () => ({
errors: [],
posts: []
}),
// Fetches posts when the component is created.
created () {
axios.get('https://example.com/api/v1/?uid=1', {
})
.then(response => {
this.posts = response.data
})
.catch(e => {
this.errors.push(e)
})
},
computed: {
unixform () {
return moment(this.posts.date, 'X').format('YYYY-MM-DD')
}
}
}
</script>
我不认为时刻是问题所在,因为如果我将功能更改为this.posts.date
或this.date
,我会收到错误{{1} }。所以,不知何故,我没有访问该属性,我无法弄清楚原因。
答案 0 :(得分:0)
我不认为这里的时刻是问题,因为如果我改变了 函数返回到this.posts.date或this.date,我得到了一个 未定义的错误。所以,不知何故,我没有访问该属性,并且 我无法弄清楚原因。
确实......你的问题甚至与Vue或Axios无关,而是与Vanilla JS有关。
AJAX响应为您提供了与此类似的对象数组:
let posts = [
{ date: '1486231256' },
{ date: '1502199613' }
];
要获取日期,您不能简单地执行posts.date
,因为posts
是一个数组!正如 @abhishekkannojia 所建议的那样,你必须遍历数组:
let posts = [
{ date: '1486231256' },
{ date: '1502199613' }
];
for (const post of posts) {
console.log(moment.unix(post.date).format('YYYY-MM-DD'));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>