在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Linux  HTML/ vue中爺爺組件不能跨父級(jí)組件,監(jiān)聽(tīng)子組件的$emit事件嗎?

vue中爺爺組件不能跨父級(jí)組件,監(jiān)聽(tīng)子組件的$emit事件嗎?

這里我點(diǎn)擊child,并不會(huì)觸發(fā) grandpa 組件的監(jiān)聽(tīng)函數(shù),即使我把parent上面的監(jiān)聽(tīng)去掉。
正常的dom元素事件也是會(huì)冒泡的,為什么這樣設(shè)計(jì)呢?

Vue.component('grandpa', {            
            template: '<div >grandpa<parent @update="handleUpdate"></parent></div>',
            methods: {
                handleUpdate() {
                    console.log("grandpa update")
                }
            },
            components: {
                'parent': {
                    template: `<div>parent<child @update="handleUpdate"></child></div>`,
                    methods:{
                        handleUpdate() {
                            console.log("parent update")
                        }
                    },
                    components: {
                        'child': {
                            template: `<div @click="$emit('update',33)">child</div>`
                        }
                    }
                }
            }
        });
        new Vue({
            el: "#root"
        });
回答
編輯回答
墨沫

https://github.com/ElemeFE/el...

參考餓了么的事件冒泡

2017年3月31日 16:14
編輯回答
編輯回答
鹿惑

你需要在parent中繼續(xù)emit

Vue.component('grandpa', {
  template: '<div >grandpa<parent @update="handleUpdate"></parent></div>',
  methods: {
    handleUpdate (data) {
      console.log('grandpa update ' + data) // grandpa update 33
    }
  },
  components: {
    'parent': {
      template: `<div>parent<child @update="handleUpdate"></child></div>`,
      methods: {
        handleUpdate (data) {
          console.log('parent update ' + data) // parent update 33
          this.$emit('update', data) // 在parent中繼續(xù)emit
        }
      },
      components: {
        'child': {
          template: `<div @click="$emit('update',33)">child</div>`
        }
      }
    }
  }
})
2017年5月28日 03:21
編輯回答
笑忘初

用vuex吧

2018年8月22日 18:58
編輯回答
乖乖瀦

題主的意思是為什么這么設(shè)計(jì)吧
因?yàn)?在vue 中 如果 爺爺和孫子 能夠直接通信,那么 兒子和爸爸 通信 是不是 就 很不清晰了
如果都監(jiān)聽(tīng)一個(gè) 事件,我如何 知道 是 那個(gè) 孩子告訴我的呢?
但是如果 只能 父子通信,我可以 在父子之間設(shè)置 不同的 通信協(xié)議
或者你 使用 狀態(tài)管理工具
看似是代碼量增加了,其實(shí)降低 了 復(fù)雜度,提升了明確性
同時(shí) 提升了性能( 我還是覺(jué)得是性能問(wèn)題 )
如果 真的要弄懂為啥這樣設(shè)計(jì) 你去私信 尤大 好了

2017年12月28日 22:01