美文网首页
vue基础 - 中心方式通讯

vue基础 - 中心方式通讯

作者: 会煮咖啡的猫咪 | 来源:发表于2018-03-13 11:20 被阅读14次

场景

多个并行组件通讯

原理

创建一个 new vue({}) 的 bus 对象,然后并行组件都动态注册在这个对象上

代码

<script src="https://cdn.jsdelivr.net/npm/vue"></script>

<div id="app">
  {{ message }}
  <first-banner></first-banner>
  <second-banner></second-banner>
</div>

<script lang="javascript">
  var Bus = new Vue({})

  var first = {
    template: `
      <div>
        <p @click="handleClick">firstInner组件</p>
      </div>
      `,
    name: 'first',
    methods: {
      handleClick () {
        Bus.$emit('fromFirstInner', '来自firstInner组件')
      }
    }
  }

  var second = {
    template: `
      <div>
          <p>secondInner组件: {{ message }}</p>
      </div>
      `,
    name: 'second',
    data() {
      return {
        message: ''
      }
    },
    created () {
      Bus.$on('fromFirstInner',(msg) => {
        this.message = msg
      })
    }
  }

  var app = new Vue({
    el: '#app',
    data: {
      message: 'center'
    },
    components: {
      "first-banner": first, 
      "second-banner": second
    }
  })
</script>

相关文章

网友评论

      本文标题:vue基础 - 中心方式通讯

      本文链接:https://www.haomeiwen.com/subject/bqtzfftx.html