Vue.js 2 axios计算值返回"无效日期"

时间:2017-08-08 13:20:14

标签: javascript vue.js axios

我是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.datethis.date,我会收到错误{{1} }。所以,不知何故,我没有访问该属性,我无法弄清楚原因。

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>