【快应用】快应用学习之兄弟组件通信

【关键词】

兄弟组件通信、Publish/Subscribe模式

【实现方案】

这里介绍利用框架本身提供的事件绑定接口来模拟Publish/Subscribe模式实现兄弟组件通信的方法。

一、实现步骤及代码

1、一个子组件定义Sub 端的逻辑处理,有processMessage、customEventInVm2(当然也可以定义Pub端如sendMsg)

<template><div class="tutorial-page" style="flex-direction: column;"><text class="tutorial-title">二弟:</text><text>处理消息:{{msg}}</text><text>事件内容:{{eventDetail}}</text><input type="button" value="点击给大哥发送消息" onclick="sendMsg" class="input-ed"/></div>
</template><style lang="less">.input-ed {width: 300px;height: 80px;font-size: 30px;background-color: #00bfff;border-radius: 20px;}
</style><script>import moment from 'moment'export default {props: [],data() {return {msg: '大家好,我是二弟',eventDetail: '大家好,我是二弟',}},sendMsg() {if (this.previousVm) {this.previousVm.receiveMsg('大哥,我是你二弟啊')}},processMessage(msg) {const now = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')this.msg = `${now}: ${msg}`},/*** 通过events对象:绑定事件*/events: {customEventInVm2(evt) {const now = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')this.eventDetail = `${now}: ${evt.detail}`}}}
</script>

2、  兄弟组件可以通过父组件中建立相互引用达到相互持有的ViewModel目的,通过在生命周期onReady中执行establishRef实现

<!-- 父组件 -->
<import name="comp-part2" src="./part2"></import>
<import name="comp-part3" src="./part3"></import><template><div class="tutorial-page" style="flex-direction: column;"><!-- 兄弟VM通信 --><div><comp-part2 id="sibling1"></comp-part2></div><div style="margin-top: 30px"><comp-part3 id="sibling2"></comp-part3></div></div>
</template><style lang="less">
</style><script>export default {onInit: function () {this.$page.setTitleBar({text: '父组件', textColor: '#4a90e2', backgroundColor: '#FFFFFF', backgroundOpacity: 0.5, menu: false})},onReady() {this.establishRef()},/*** 建立相互VM的引用*/establishRef(evt) {const siblingVm1 = this.$vm('sibling1')const siblingVm2 = this.$vm('sibling2')siblingVm1.parentVm = thissiblingVm1.nextVm = siblingVm2siblingVm2.parentVm = thissiblingVm2.previousVm = siblingVm1siblingVm1.previousVm = siblingVm2}}
</script>

3、  另外一个子组件定义Pub 端,执行sendMessage即可完成触发(当然也可以定义Sub端,如receiveMsg)

<template><div class="tutorial-page" style="flex-direction: column;"><text class="tutorial-title">大哥:</text><text>处理消息:{{msg1}}</text><input type="button" value="点击给二弟发送消息" onclick="sendMesssage" class="input-dg"/></div>
</template><style lang="less">.input-dg {width: 300px;height: 80px;font-size: 30px;background-color: #00bfff;border-radius: 20px;}
</style><script>import moment from 'moment'export default {props: [],data() {return {msg1: '大家好,我是大哥',}},receiveMsg(msg) {const now = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')this.msg1 = `${now}: ${msg}`},sendMesssage() {if (this.previousVm) {// Way1. 调用方法this.previousVm.processMessage('二弟,我是你大哥啊')// Way2. 触发事件this.previousVm.$emit('customEventInVm2', '二弟,我是你大哥啊')}}}
</script>

二、效果图展示

cke_17412.pngcke_21993.png

【参考文档】

https://doc.quickapp.cn/tutorial/framework/parent-child-component-communication.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/153641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CLion】CLion的cmake-build-release/debug位置变更

[CLion] CLion的cmake-build-debug和cmake-build-release位置变更 CLion IDE的cmake-build-release/debug位置是根目录下&#xff0c;虽然可以ignore这个文件&#xff0c;但是还是有点看起来不爽&#xff0c;按照这个方式就可以&#xff0c;干掉他&#xff0c;更改方式如下。 …

.skip() 和 .only() 的使用

.skip() 和 .only() 的使用 说明 在做自动化测试中&#xff0c;跳过执行某些测试用例&#xff0c;或只运行某些指定的测试用例&#xff0c;这种情况是很常见的Cypress中也提供了这种功能 如何跳过测试用例 通过describe.skip() 或者 context.skip() 来跳过不需要执行的测试…

Git——分布式版本控制工具

一、概述 1.开发中的实际场景 备份代码还原协同开发追溯问题代码的编写人和编写时间 2.版本控制器的方式 集中式版本控制工具 集中式版本控制工具&#xff0c;版本库是集中存放在中央服务器的&#xff0c;team里每个人work时从中央服务器下载代码&#xff0c;是必须联网才能…

统信UOS通过源码安装软件提示“configure: error: cannot run C compiled programs.”错误

1. 问题说明 使用源码的方式安装git软件&#xff0c;安装过程中出现两个错误。 编译错误“cannot run C compiled programs” XC:~/Downloads/git-2.42.1$ ./configure --prefix/home/software/git-2.42.1 configure: Setting lib to lib (the default) configure: Will try…

vue3使用pinia实现数据缓存

文章目录 前言一、pinia是什么&#xff1f;二、安装pinia三、注册pinia四、使用pinia定义数据及方法使用 优化如有启发&#xff0c;可点赞收藏哟~ 前言 vue2以前一直使用vuex实现状态管理 vue3之后推出了pinia… 一、pinia是什么&#xff1f; 直观、类型安全、轻便灵活的Vue …

关于新能源汽车的英语翻译

近年来&#xff0c;随着全球对环保和可持续发展的重视&#xff0c;新能源汽车已经成为汽车产业的重要发展方向。各国政府和企业都在加大投入&#xff0c;推动新能源汽车的技术研发和产业化发展&#xff0c;进而促进了新能源汽车翻译的需求不断提升 。那么&#xff0c;关于新能源…

react重要知识点(面经)

react重要知识点&#xff08;面经&#xff09; react生命周期classhooks reduxredux 核心概念redux 计数器案例 react页面加载卡顿使用懒加载异步加载JavaScript压缩和缓存静态资源使用React.memo() PubSub使用方式1.1 react导入库1.2 react 页面引入pubsubjs1.3 pubsubjs使用2…

碰撞检测要点总结

Physics.SphereCast不会检测已经在半径内的碰撞&#xff01;&#xff01;&#xff01; 加个容错 private bool SphereCast(Vector3 _originPos,Vector3 _targetPos,out RaycastHit hit,LayerMask _layerMask) {Vector3 dir (_targetPos - _originPos).normalized;float radius…

Java 正则表达式、方法、stream、file、IO、Scanner类

一、Java 正则表达式&#xff1a; 正则表达式定了字符串的模式&#xff0c;用来搜索、编辑或处理文本。正则表达式的实例及描述&#xff1a; 正则表达式 描述 this is text 匹配字符串 "this is text" this\sis\stext 注意字符串中的 \s。 匹配单词 "this&…

解决Python中文乱码问题的策略与技巧

目录 引言 一、解决Python中文乱码问题的策略 1、使用合适的编码方式 2、设置Python解释器的编码环境变量 3、使用合适的库和框架 4. 对数据进行正确的处理和格式化 5、使用合适的打印和显示方式 6. 考虑使用多语言支持 二、解决Python中文乱码问题的技巧 1、避免使用…

深度学习基础知识——从人工神经网络开始

一、介绍 您知道第一个神经网络是在 20 世纪 50 年代初发现的吗&#xff1f; 深度学习 (DL) 和神经网络 (NN) 目前正在推动本世纪一些最巧妙的发明。他们从数据和环境中学习的令人难以置信的能力使他们成为机器学习科学家的首选。 深度学习和神经网络是自动驾驶汽车、图像识别软…

GitLab的个人仓库转移到团队仓库

文章目录 一、Gitlab权限二、转移2.1、编辑个人仓库2.2、Transfer project2.3、切换Namespace2.4、确认修改 一、Gitlab权限 Gitlab用户在组中有五种权限&#xff1a;Guest、Reporter、Developer、Master、Owner Guest&#xff1a;可以创建issue、发表评论&#xff0c;不能读写…

“玄学+社交+AI”最全解题思路,融云 AI 对话方案全力支持

“东北 I 人异于常人”成了 MBTI 最新热梗。互联网 Meme 在放过了“为 I 做 E”后&#xff0c;开始对 MBTI 做更精细的划分了。关注【融云全球互联网通信云】了解更多 一切皆可玄学&#xff0c;今年爆火的还有香灰琉璃和十八籽手串&#xff0c;作为年轻人“在上进与上班中选择了…

离线任务的稳定性

数据同步底层脚本 日志追踪&#xff0c;关键字提取&#xff0c;任务失败重启策略 Mysql_to_hive.sh #!/bin/bashecho "mysql host is" $1 echo "mysql db is" $2 echo "mysql table is" $3 echo "mysql username is" $4 echo "…

最新企业服务总线ESB的国内主要厂商和开源厂商排名,方案书价格多少

企业服务总线ESB是什么&#xff1f; ESB平台&#xff08;企业服务总线&#xff0c;Enterprise Service Bus&#xff09;是一种企业级集成平台&#xff0c;它提供了一种开放的、基于标准的消息机制&#xff0c;通过简单的标准适配器和接口&#xff0c;来完成粗粒度应用&#xff…

使用sql语句获取当前SQL sever 的数据库名和名称

1、获取当前数据库名 Select Name From Master..SysDataBases Where DbId(Select Dbid From Master..SysProcesses Where Spid spid) 2、获取当前数据库注释 select db_id(NoteMessage) 或者 Select Dbid From Master..SysProcesses Where Spid spid

外呼系统作用和优势有哪些okcc,ai源码

随着外呼系统诞生&#xff0c;普通中小企业也开始广泛使用&#xff0c;系统给他们带来更多的服务方式和提升业绩的可能。然而&#xff0c;许多企业对外呼系统的理解相对片面和简单&#xff0c;认为它是一个成本中心&#xff0c;需要继续投入人力和使用。事实上&#xff0c;外呼…

HDFS的Shell操作

文章目录 一、HDFS的Shell介绍二、了解HDFS常用Shell命令&#xff08;一&#xff09;三种Shell命令方式&#xff08;二&#xff09;FileSystem Shell文档&#xff08;三&#xff09;常用HDFS的Shell命令 三、HDFS常用命令操作实战&#xff08;一&#xff09;创建目录 一、HDFS的…

Django 入门学习总结8-管理页面的生成

修改polls/admin.py文件为&#xff1a; from django.contrib import admin from .models import Choice, Question class ChoiceInline(admin.StackedInline): model Choice extra 3 class QuestionAdmin(admin.ModelAdmin): fieldsets [ (None, {&q…

java系列之 页面打印出 [object Object],[object Object]

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; &#x1f383; 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 &#x1f3f7;️ 标签 | 男 自律狂人 目标明确 责任心强 ✈️公…