057、Vue3+TypeScript基础,页面通讯之父页面使用$refs修改子页面暴露的成员

news/2024/9/19 17:04:52/文章来源:https://www.cnblogs.com/tianpan2019/p/18377921

01、main.js代码如下:

// 引入createApp用于创建Vue实例
import {createApp} from 'vue'
// 引入App.vue根组件
import App from './App.vue'// 引入emitter用于全局事件总线
// import emitter from '@/utils/emitter'

const app = createApp(App);// App.vue的根元素id为app
app.mount('#app')

02、App.vue代码如下:

<template><div class="app"><h2 class="title">App.Vue</h2><Father/></div>
</template><script lang="ts" setup name="App">
import Father from "@/view/Father.vue";
</script><style scoped>
.app {background-color: #ddd;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;
}.nav-button {display: inline-block; /* 让链接显示为块级元素,以便应用宽度和高度 */padding: 10px 20px; /* 内边距 */margin: 0 5px; /* 外边距,用于按钮之间的间隔 */text-decoration: none; /* 移除下划线 */color: white; /* 文本颜色 */background-color: #007bff; /* 背景颜色 */border-radius: 5px; /* 边框圆角 */transition: background-color 0.3s; /* 平滑过渡效果 */
}.nav-button:hover {background-color: #0056b3; /* 鼠标悬停时的背景颜色 */
}.nav-button.router-link-active {background-color: #28a745; /* 当前激活(路由匹配)时的背景颜色 */
}.mai-content {/* 添加边框样式 */border: 2px solid #000; /* 边框宽度、样式和颜色 */border-radius: 5px; /* 可选:添加边框圆角 */padding: 20px; /* 可选:给内部内容添加一些内边距 */margin: 20px; /* 可选:给元素添加一些外边距,以便与其他元素隔开 */
}
</style>

03、Father.vue代码如下:

<template><div class="mypage"><h3>我是父页面</h3><h4>房产 {{ house }}</h4><button @click="changeToy">修改Child1玩具</button><button @click="changePC">修改Child2电脑</button><button @click="changeAllChildBook($refs)">修改所有子页面数据</button><br><br><child1 ref="c1"/><br><child2 ref="c2"/></div>
</template><script lang="ts" name="Father" setup>
import {ref} from "vue";
import Child1 from "@/view/Child1.vue";
import Child2 from "@/view/Child2.vue";//数据
let house = ref(4)
let c1 = ref()
let c2 = ref()function changeToy() {c1.value.pc = '小米'
}
function changePC() {c2.value.toy = '手机'
}
function changeAllChildBook(refs: { [key: string]: any })
{console.log(refs)for (let key in refs) {//修改子页面数据
    refs[key].book += 1}
}
</script>
<style scoped>
.mypage {background-color: #ddd;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;button {margin: 0 5px;}
}
</style>

04、Child1.vue代码如下:

<template><div class="mypage"><h3>我是子页面1</h3><h4>电脑:{{ pc }}</h4><h4>书籍:{{ book }} 本</h4></div>
</template><script lang="ts" name="Child1" setup>
import {ref} from "vue";
//数据
let pc = ref('华硕')
let book = ref(6)
//暴露pc, book这2个数据
defineExpose({pc, book})
</script><style scoped>
.mypage {background-color: #ddd;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;button {margin: 0 5px;}
}
</style>

05、Child2.vue代码如下:

<template><div class="mypage"><h3>我是子页面2</h3><h4>玩具:{{ toy }}</h4><h4>书籍:{{ book }} 本</h4></div>
</template><script lang="ts" name="Child2" setup>
import {ref} from "vue";
//数据
let toy = ref('奥特曼')
let book = ref(1)
//暴露toy, book这2个数据
defineExpose({toy, book})
</script><style scoped>
.mypage {background-color: #ddd;box-shadow: 0 0 10px;border-radius: 10px;padding: 20px;button {margin: 0 5px;}
}
</style>

06、布局如下:

 07、浏览器显示如下:

 

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

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

相关文章

【Windows提权】windows环境变量滥用维权/提权

原创 掌控安全学院 - camer#include <windows.h> #include <stdio.h>int main(int argc, char *argv[]) {// 恶意程序wchar_t* Shell = L"C:\\Windows\\Temp\\shell.exe";HINSTANCE hInstance1 = ShellExecuteW(NULL, L"open", Shell, NULL, N…

13-神经网络-模型预测

nn.ReLU()是构造了一个ReLU对象,并不是函数调用,而F.ReLU()是函数调用类似于这样来构造我们的层和块,可以比直接用nn.Sequential有更高的灵活性。当然我们也可以在我们的class中使用nn.Sequential,这样组合使用也可以提高灵活性

订单

当点击结算(car.html)时,会跳转到提交订单页面(palce_order.html)

信息学奥赛初赛天天练-74-NOIP2016普及组-基础题5-树、父节点、根节点、叶子节点、非叶节点、组合、组合排除法

NOIP 2016 普及组 基础题5 21 从一个 44的棋盘(不可旋转)中选取不在同一行也不在同一列上的两个方格,共有( )种方法。 22 约定二叉树的根节点高度为 1。一棵结点数为 2016 的二叉树最少有( )个叶子结点;一棵结点数为 2016 的二叉树最小的高度值是( …

【Linux提权】check-system文件

【此次省略一万字.........】 成功突破边界! 提权: 看了sudo -l,发现一个shutdown命令可以,但是这名字应该是重启吧。。。先跑一跑linpeas.sh,试了一下跑出来的CVE,没有成功找一找具有root命令并且我们可以写权限的文件: find / -user root -type f -perm -o=rw -ls 2&g…

锂电池充电电路 TP4056

1. 主要找了下淘宝比较常用的器件,TP4056芯片。SOP8封装,体积稍微有点大。原理简单,这次就先选上 原理图如下:

【Git操作】回退版本

git reset --soft <commit> git reset --hard <commit>  git reset --mixed <commit> //默认这个版本 首先执行git log 查看本地有那些版本的代码。 执行 git reset --soft c97f6b343c6b6d0497ef6dab98010981af1af404//或者 git reset --soft HEDD^执行这个…

Tarjan 之 割边

图片来源 董晓算法本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/sea-and-sky/p/18377823

PG数据库导致断电/重启无法正常启动问题排查

PG数据库导致断电/重启无法正常启动问题排查 一、问题 数据库断电后,启动PG数据库后无法正常启动,报”psql: could not connect to server: No such file or directory”的错误,错误图片如下:二、背景分析 数据库是单机版,使用k8s进行部署运行在指定节点,数据目录挂服务器…

【AI+框架】人工智能计算平台安全框架应用参考

原创 网络安全等保测评如图B.1所示,各参与方通过服务接口调用AI计算平台提供的相关机制保护其AI核心资产。 各参与方如何调用安全机制 解决相应安全威胁可具体参考表B.1: a) AI应用运行方:基于本文件中定义的服务接口和安全模块实现的功能,保护AI应用安全运行, 抵御针对运行…

053、Vue3+TypeScript基础,页面通讯之$attrs的使用

01、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vue// 引入emitter用于全局事件总线 // import emitter from @/utils/emitterconst app = createApp(App);// App.vue的根元素id为app app.mou…

C程序设计语言(第2版新版)练习题1-8

练习1-8 编写一个统计空格、制表符与换行符个数的程序。#include <stdio.h>int main(int argc, char *argv[]) {(void)argc;(void)argv;int c;int space = 0;int tab = 0;int line = 0;while((c = getchar()) != EOF) {if (c == ) {space++;}else if (c == \t) {tab++;}…