当前位置: 首页 > news >正文

前端基础之《Vue(15)—组件通信(2)》

接上一篇。

八、事件总线例子

1、什么是事件总线
const bus = new Vue(),不给选项就是事件总线,给选项就是组件了。

事件总线函数:
(1)bus.$on('频道', callback):监听一个“频道”
(2)bus.$emit('频道', '消息'):向指定“频道”上发送消息
(3)bus.$off():取消订阅“频道”
(4)bus.$once():对某个“频道”只监听一次

2、什么是“订阅-发布”模式
这里的事件总线,就是一种“订阅-发布”模式。
在Vue的背后源码中的Dep类也是一种“订阅-发布”模式。
“订阅-发布”模式,也叫做“观察者模式”。

3、代码

<html>
<head><title>组件通信-事件总线</title><style>.row {line-height: 22px;}</style>
</head>
<body><div id="app"><comp-teacher></comp-teacher><hr><comp-student></comp-student></div><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><script>const bus = new Vue() // 事件总线(事件系统)Vue.component('comp-teacher', {template: `<div><h2>老师在线</h2><input type="text" v-model='msg' @keyup.enter='send' /><button @click='send'>发送消息</button><div v-html='content'></div></div>`,data() {return {msg: '',content: ''}},methods: {send() {// 使用事件总线向qqq频道上发送消息bus.$emit('qqq', this.msg)this.msg = ''}},mounted() {bus.$on('stu', msg=>{this.content += `<div class='row'>学生说:${msg}</div>`})}})Vue.component('comp-student', {template: `<div><h2>学生在线</h2><input type="text" v-model='msg' @keyup.enter='send' /><button @click='send'>发送消息</button><div v-html='content'></div></div>`,data() {return {msg: '',content: ''}},methods: {send() {// 学生发消息bus.$emit('stu', this.msg)this.msg = ''}},mounted() {// 使用事件总线,监听qqq这个频道bus.$on('qqq', msg=>{console.log('student---qqq频道上有消息来了', msg)this.content += `<div class='row'>老师说:${msg}</div>`})}})const app = new Vue({})app.$mount('#app')</script></body>
</html>

http://www.xdnf.cn/news/344017.html

相关文章:

  • Cut video with ffmpeg
  • 创建型模式:工厂方法(Factory Method)模式
  • 最新CDGP单选题(第四章)补充
  • 力扣智慧思想小题,目录力扣.跳跃游戏(思想很重要)力扣.跳跃游戏II(还是思想)力扣.分发糖果力扣151.反转字符串中的单词力扣.轮转数组
  • cat、more和less的区别
  • 趣味编程:答案之书
  • CSS动画
  • AI视频生成的艺术:镜头语言
  • 多模态大语言模型arxiv论文略读(六十四)
  • 算法每日一题 | 入门-分支结构-Apples Prologue/苹果和虫子
  • DevExtreme JS ASP.NET Core v25.1新功能预览 - 全新的Stepper组件
  • 《函数基本语法》
  • 标准 PVT (Process-Voltage-Temperature) 签核矩阵
  • VBA -- 学习Day2
  • Linux常用命令34——uname显示系统内核信息
  • P2415 集合求和 详解
  • idea出现tomcat不能正确部署的问题--解决方案2
  • 前端面试每日三题 - Day 28
  • OpenCV CPU性能优化
  • 【文档智能】开源的阅读顺序(Layoutreader)模型使用指南
  • 可变参数包 和 lambda表达式
  • 代码简洁之道
  • 公链钱包开发:技术逻辑与产品设计实践
  • 21、魔法传送阵——React 19 文件上传优化
  • 【Dv3Admin】Git 子模块在 Dv3admin 插件项目统一管理实践
  • SpringBoot的自动配置功能-笔记
  • 智能边缘计算系统:基于Python的创新应用
  • python3连接数据库工具类之Oracle
  • Day19 常见的特征筛选算法
  • 零拷贝的简单复习