vue基础 - 中心方式通讯

场景

多个并行组件通讯

原理

创建一个 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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 178,118评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,728评论 4 61
  • 人,总是很难改正自己的缺点,人,也总是很难发现自己的错误,有时,明知错了,却欲罢不能,一错再错,把握正确的方向,坚...
    Lzr_2017阅读 201评论 0 3
  • 矇瞳/文 小时候, 乡愁是一枚小小的船票, 我在这头, 母亲在那头。 长大后, 乡愁是一张窄窄的船票, 我在这头,...
    这个周末阅读 474评论 1 4
  • 谢谢阑珊!谢谢作者!谢谢上帝的安排让我遇见如此美好的事情!日常我不太会用如此强烈的表达方式,但这里不得不用!因为只...
    耀冬阅读 171评论 0 0

友情链接更多精彩内容