如何从计算方法中访问数据

时间:2018-08-24 10:00:42

标签: vue.js vuejs2

方法:

methods: {
    fetchData () {
      axios.get(globalConfig.ORDERS_URL, {
        params: {
          limit: this.limit,
          offset: this.offset
        }
      })
        .then((resp) => {
          this.req = resp.data
          console.log(resp)
        })
        .catch((err) => {
          console.log(err)
        })
    }
}

计算:

  computed: {
    filteredRequests () {
      return this.req.results.filter(item => {
        return item.created.toLowerCase().includes(this.name)
      })
    }
  }

数据:

  data () {
    return {
      req: {},
    }
  }

从API端点解析数据,但是我根本无法在计算方法中使用req对象,这会引发错误。

req对象的内容:

enter image description here

我也曾经使用过:

  created () {
    this.fetchData()
  },

  watch: {
    '$route': 'fetchData'
  }

因此,当我直接在模板中使用req对象时,它可以工作,但是我无法在计算方法中对其进行过滤。

1 个答案:

答案 0 :(得分:0)

您在this.req.results中调用computed,而初始数据为req: {},并且异步fetchData()方法无法立即解决,这就是为什么会导致错误的原因。做类似的事情:

computed: {
  filteredRequests () {
    if (this.req.results) {
      return this.req.results.filter(item => {
        return item.created.toLowerCase().includes(this.name)
      })
    } else {
      return 'No results'
    }
  }
}