Vue 之孙组件向爷组件通讯

如何把孙组件内特定的数据传给爷组件?html

例如
把孙组件的名字传给爷组件并在爷组件上显示vue

思路
在孙组件被点击后 emit 事件 1 和孙组件的名字
在父组件上监听孙组件 emit 出的事件 1,再次 emit 事件 2
在爷组件上监听父组件 emit 出的事件 2,并触发处理函数
这个处理函数将父组件传出的子组件名字显示在父组件上npm

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.7/dist/vue.js"></script>
  </head>
  <body>
    <div id="app">
      child name: {{child}}
      <parent v-on:say2='greeting("child", $event)'></parent>
    </div>
  </body>
  <script>
    Vue.component('parent', {
      template: `
      <div>
        <child v-on:say1='$emit("say2", $event)'></child>
      </div>      `
    })
    Vue.component('child', {
      template: `
        <div>
          child
          <button v-on:click='$emit("say1", "Jack")'>greeting</button>
        </div>
      `
    })
    new Vue({
      el: '#app',
      data: {
        child: '',
      },
      methods: {
        greeting: function (key, value) {
          this[key] = value
        },
      }
    })
  </script>
</html>
相关文章
相关标签/搜索