目前情况是这样的,用的vant组件,打算二次封装list,思路是父组件通过异步取data,子组件每次下拉刷新,触发onload方法,onload里emit父组件的异步方法,得到最新的data。我想咨询的是,如何等父组件的方法执行完,拿到data数据后,再执行子组件emit方法之后的方法,子组件代码片段如下。
```javascript
this.$emit('loadData')
if (this.total === this.tableData.length) {
this.finished = true
}
```
那可以试试Promise
// 子组件
function A () {
// 同步拿到父组件最新的dataList
const dataList = await this.$emit('loadData')
if (this.total === this.tableData.length) {
this.finished = true
}
}
// 父组件
function loadData () {
return new Promise((resolve)=>{
// 异步请求获取到dataList
....
resolve(dataList)
})
}
设置一下 watch 侦听器 或者computed计算属性,当某个数据变更的时候执行你对应的方法,即可
function A:
this.$emit('loadData')
function B:
if (this.total === this.tableData.length) {
this.finished = true
}
子组件刷新,执行A(),A()会触发执行父组件loadData()方法,在loadData()方法执行完成后,主动调用子组件B():
this.$refs[’xx'].B()