计算属性不读取已创建的数据

时间:2018-02-09 15:07:31

标签: vue.js vuejs2

我不确定计算属性(在vue生命周期中)何时到来。让我们说我有一个方法,我在created()中运行:

created () {
  getSomething()
}

在getSomething()里面,我获取数据并将我的数据属性填充为:

getSomething(){
 axios.get(...) { this.info = response.data }
}

现在,在计算属性中,我这样做:

computed: {
  doSomething () {
    this.info.forEach(item => {})
 }
}

但是,在我的计算中我得到forEach是未定义的,好像this.info不是数组或者没有被填充。

我做错了什么?是在created()之前调用的计算道具吗?

2 个答案:

答案 0 :(得分:2)

尝试这样的事情

getSomething(){
 return axios.get(...) { this.info = response.data }
}

然后你就可以使用像这样的创建方法中返回的promise ....

created () {
  getSomething().then( () => {
    doSomething()
  }}
}

答案 1 :(得分:2)

您可以使用Vuex'州管理......

Vuex:

  • 急件

  • 操作

  • 的突变

  • 吸气剂

我的想法是,在您的网页加载中,将action映射到调用axios服务的商店,并在它返回后,commit存储一个变异对商店的回应...... 然后,您可以将状态映射到组件并检索数据。

这可能不是最快的答案,但如果您希望需要axios请求中的响应数据,则可能值得将其置于某种状态管理中: - )