vue 的异步数据遍历

2018-11-20 22:48:59 +08:00
 test4zhou

使用 vue + vuex + axios

代码如下:

let sexList = [// store 里的数据
  {
    code: 0,
    sexText: '女',
  },
  {
    code: 1,
    sexText: '男',
  }
]

let clientList = [// index 页面里的数据
  {
    name: '杨过',
    sexCode: 1,
  },
  {
    name: '小龙女',
    sexCode: 0,
  }
]

mounted() {
  this.$store.dispatch('getSexList')// 获取性别列表
  
  getClientList({data: 'clients'}).then((res) => {
    if(res.data.success) {
      this.clientList = res.data.data// 获取客户数据
    }else {
      this.$message.error(res.data.message)
    }
  }).catch((err) => {
    console.log(err)
  })
},
watch: {
  clientList(val) {// 监听客户数据,遍历对比 sexList 的 sexCode,放到客户列表里
    if(val && val.length > 0) {
      val.map((item) {
        this.$store.getters.sexList.map((sex_item) => {
          if(sex_item.sexCode == item.sexCode) {
            item.sexText = sex_item.sexText
          }
        })
      })
    }
  },
}

页面进入的时候并不能实现我想要的效果:监听客户数据 clientList,遍历对比 store 里的 sexList 的 sexCode,把性别 sexText 放到客户列表里

请问一下该怎么解决这个异步的问题?

2920 次点击
所在节点    前端开发
5 条回复
airyland
2018-11-21 00:36:10 +08:00
看文档,watch 设置 immediate: true
johnnyNg
2018-11-21 08:59:38 +08:00
mark 一下,待会儿再看
johnnyNg
2018-11-21 10:43:14 +08:00
```js
{
created() {
this.$store.dispatch('getSexList')// 获取性别列表

getClientList({data: 'clients'}).then((res) => {
if(res.data.success) {
this.clientList = res.data.data// 获取客户数据
}else {
this.$message.error(res.data.message)
}
}).catch((err) => {
console.log(err)
})
},

computed: {
myClientList() {
if (this.$store.getters.sexList.length === 0 || this.clientList.length === 0) return []

return this.clientList.map((item) => ({
...item,

...this.$store.getters.sexList.find(({code}) => code === item.sexCode )
}))
}
}
}

```
johnnyNg
2018-11-21 10:44:12 +08:00
语法高亮是怎么弄得,我发的 markdown 不支持?
test4zhou
2018-11-21 13:44:34 +08:00
@johnnyNg 开头应该是```javascript

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/509803

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX