vue 父组件引入多个子组件,每个子组件向父组件传递数据

要实现一个功能:
父组件在所有引入的子组件加载完毕之后,再执行某些方法,我开始网上搜到说在updated里执行方法,测试发现并不能很好的实现效果,然后我就想在每一个子组件里给一个变量,比如1吧,父组件接收到这个值再想加,是不是就能解决这个问题,我在mouted里面执行了这个方法,因为周期函数执行先后的问题,发现这个方法只执行了一次,我想用监听的方法去实现,不知道这个方法监听是怎么弄的,

子组件都写了:
this.$emit('chageNum', 1)

父组件接收:
<xxx @chageNum = "chageNum"></xxx>

方法
chageNum(val){

this.num += val

}

watch:
'num':(n,o){

if(this.num == 8){
    8个组件加载完成的时候 调用方法
}

}

这是我目前的思路,但是不能实现效果,
这个chageNum方法不知道要在什么地方调用
麻烦大佬帮忙理解一下 感谢

阅读 2.4k
2 个回答

vue2 好像有个 @hook:mounted 虽然不在文档中,但是网上可以搜到用法,直接在父组件监听子组件的生命周期。

当然,你自己冒一个事件来计数也是可以的。子组件 mounted 或者其他的时候触发 $emit('chageNum'),然后父组件根据触发次数计数。

data(){
    return {
        componentsLoaded:[false, false, false, false, false, false, false, false]
    }
},
computed:{
    allLoaded(){
        return this.componentsLoaded.every(flag=>flag)
    }
},
watch:{
    allLoaded(val){
        ....
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题