详情页 路由传值

路由传值获取参数 渲染数据

主页面

<template><div class="km"><div  v-for="item in items" :key="item.id"><div class="title-km" ><img :src="item.imageUrl" alt="Image" class="title-km-img"><div class="title-km-text"><h3 class="title-km-text-p">{{ item.title }}</h3><span class="title-km-text-span ">{{ item.content }}</span></div></div><button class="but" @click="but(item)">详情>></button><el-divider></el-divider></div></div> </template><script>export default {// 当前页面的  父页面传过来的参数props: ['contentArr'],data(){return{// 定义变量items: [],//   定义传值的变量   // 新增数组用于存储itemcontent: {conten:[],images:[]},}},created() {// 把从当前页面的  父页面传过来的参数  进行赋值,赋值给itemsthis.items=this.contentArr// // 然后,从 items 中提取 imageUrl 并更新 images///提取 content 并更新 contenthis.itemcontent.conten = this.items.map(item => item.content);this.itemcontent.images = this.items.map(item => item.imageUrl );// 将this.contentArr数组中的每个元素(item)通过map方法处理,返回一个新的数组,赋值给this.items。this.items = this.contentArr.map(item => ({// 使用对象展开语法复制当前item对象的所有属性。...item,// 对content属性进行特殊处理:content: item.content.replace(/&nbsp;/g, ' ') // 首先,使用正则表达式将所有&nbsp;字符(HTML中表示不间断空格的实体)替换为普通的空格字符。// /g标志表示全局替换,即替换所有匹配的项,而不仅仅是第一个。.replace(/<[^>]*>/g, '') // 然后,使用正则表达式剥离所有的HTML标签。// 这个正则表达式匹配以<开头,以>结尾,中间不包含>的任意字符序列,即匹配一个完整的HTML标签,并将其替换为空字符串。// 同样,/g标志表示全局替换。}));},methods: {but() {// alert('内容')// 通过路由把参数传给  当前页面的子页面this.$router.push({path: '/subcomponent/DetailPage',  //路径  需要在 router 定义路由 query: {// 传递的是一个对象 但是路由有限制 所以需要变化itemcontent: JSON.stringify(this.itemcontent) // 将对象转换为字符串,因为 query 参数只能是字符串// 传递一项 可以不用转换类型// itemcontent: this.itemcontent.images}});// 写法二// this.$router.push({ path: '/subcomponent/DetailPage',this.itemcontent.images });},}}</script><style>.km{width: 43rem;background-color: rgb(255 255 255);flex-wrap: wrap;gap: 1rem;}.title-km {flex: 1 1 calc(33.333% - 1rem); box-sizing: border-box; padding: 1rem; display: flex;}.title-km-img {width: 10rem;height: 8rem;}.title-km-text-p{width: 13rem;white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }.title-km-text-span {display: inline-block;width: 25rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 16px; }.but{margin-left: 35rem;margin-top: -2rem;position: absolute;}.el-divider--horizontal {display: block;height: 1px;width: 100%;margin: 3px 0;}</style>

子页面

<template><!-- 组件的模板部分 --><div class="conten"><!-- 使用v-for指令遍历images数组,为每个元素渲染一个img标签 --><!-- :key绑定唯一标识,这里使用index作为临时解决方案,但通常建议使用唯一ID --><img v-for="(image, index) in images" :key="index" :src="image" alt="Image"><!-- 使用v-html指令将sanitizedConten的数据作为HTML插入到p标签中 --><!-- 注意:v-html会插入原始的HTML,因此要确保sanitizedConten是安全的,避免XSS攻击 --><p v-html="sanitizedConten"></p></div></template><script>export default {data() {return {// 定义响应式数据images: [], // 存储图片的URL数组contenRaw: '', // 存储从路由获取的原始HTML内容(未清理)sanitizedConten: '' // 存储清理后的HTML内容,用于安全显示};},computed: {// 定义一个计算属性,用于从路由查询参数中获取itemcontent数据itemcontent() {// 使用this.$route.query访问路由查询参数// 提供一个空对象字符串作为默认值,然后尝试解析为JSONreturn this.$route.query.itemcontent || '{}';}},mounted() {// 组件挂载完成后执行的钩子函数try {// 解码URL编码的JSON字符串,并尝试解析为JavaScript对象const parsedData = JSON.parse(decodeURIComponent(this.itemcontent));// 确保this.images是一个数组,即使解析的数据中没有提供images也保持为数组this.images = parsedData.images || [];// 处理contenRaw,假设只需要显示第一个content元素(如果有的话)this.contenRaw = parsedData.conten ? parsedData.conten[0] : '';// 使用cleanHtml方法清理HTML内容,并将结果赋值给sanitizedContenthis.sanitizedConten = this.cleanHtml(this.contenRaw);} catch (error) {// 如果在解析或处理数据时发生错误,将错误信息打印到控制台console.error('Error parsing itemcontent:', error);}},methods: {// 定义一个方法用于清理HTML内容cleanHtml(html) {// 使用正则表达式删除所有的HTML标签(包括自闭合标签)// 同时将&nbsp;实体替换为空格,并去除字符串两端的空白字符return html.replace(/<\/?[^>]+(>|$)/g, '').replace(/&nbsp;/g, ' ').trim();}}};</script><style scoped>/* .conten{padding:  7rem 20rem ;} */</style>

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

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

相关文章

从源码角度分析SpringMVC执行流程

文章目录 一、SpringMVC基本概述二、SpringMVC的执行流程三、SpringMVC源码的执行流程四、前端控制器根据请求获取处理器原理五、如何根据处理器获取处理器适配器六、SpringMVC拦截器执行源码解读七、处理器适配器执行方法原理 一、SpringMVC基本概述 SpringMVC是基于Servlet进…

Java中网络编程的学习

目录 网络编程概述 网络模型 网络通信三要素: IP 端口号 通信协议 IP地址&#xff08;Internet Protocol Address&#xff09; 端口号 网络通信协议 TCP 三次握手 四次挥手 UDP TCP编程 客户端Socket的工作过程包含以下四个基本的步骤&#xff1a; 服务器程序…

Winforms开发基础之非主线程操作UI控件的误区

前言 想象一下&#xff0c;你正在开发一个桌面应用程序&#xff0c;用户点击按钮后需要执行一个耗时操作。为了避免界面卡顿&#xff0c;你决定使用后台线程来处理任务。然而&#xff0c;当你在后台线程中尝试更新UI控件时&#xff0c;程序突然崩溃了。这是为什么呢&#xff1…

前端组件开发:组件开发 / 定义配置 / 配置驱动开发 / 爬虫配置 / 组件V2.0 / form表单 / table表单

一、最早的灵感 最早的灵感来自sprider / 网络爬虫 / 爬虫配置&#xff0c;在爬虫爬取网站文章时候&#xff0c;会输入给爬虫一个配置文件&#xff0c;里边的内容是一个json对象。里边包含了所有想要抓取的页面的信息。爬虫通过这个配置就可以抓取目标网站的数据。其实本文要引…

个人主页搭建全流程(Nginx部署+SSL配置+DCDN加速)

前言 最近开始准备秋招&#xff0c;打算做一个个人主页&#xff0c;以便在秋招市场上更有竞争力。 目前&#xff0c;现有的一些搭建主页的博文教程存在以下一些问题&#xff1a; 使用Github Page进行部署&#xff0c;这在国内访问容易受阻使用宝塔面板等框架&#xff0c;功能…

day07_Spark SQL

文章目录 day07_Spark SQL课程笔记一、今日课程内容二、Spark SQL函数定义&#xff08;掌握&#xff09;1、窗口函数2、自定义函数背景2.1 回顾函数分类标准:SQL最开始是_内置函数&自定义函数_两种 2.2 自定义函数背景 3、Spark原生自定义UDF函数3.1 自定义函数流程&#x…

【I/O编程】UNIX文件基础

IO编程的本质是通过 API 操作 文件。 什么是 IO I - Input 输入O - Output 输出 这里的输入和输出都是站在应用&#xff08;运行中的程序&#xff09;的角度。外部特指文件。 这里的文件是泛指&#xff0c;并不是只表示存在存盘中的常规文件。还有设备、套接字、管道、链接…

软件测试 —— Selenium常用函数

软件测试 —— Selenium常用函数 操作测试对象点击/提交对象 click()模拟按键输入 send_keys("")清除文本内容 clear() 模拟用户键盘行为 Keys包示例用法 获取文本信息 textget_attribute("属性名称") 获取当前页面标题 title获取当前页面的 url current_u…

java导出pdf文件

java导出pdf&#xff0c;前端下载 1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接 使用注意点 因为原来制作的pdf表单内容过于复杂&#xff0c;下面代码只包含前两行的操作。 本次操作需要前端向后端发起请求&#xff0c;后端返回数据给前端…

Python教程丨Python环境搭建 (含IDE安装)——保姆级教程!

工欲善其事&#xff0c;必先利其器。 学习Python的第一步不要再加收藏夹了&#xff01;提高执行力&#xff0c;先给自己装好Python。 1. Python 下载 1.1. 下载安装包 既然要下载Python&#xff0c;我们直接进入python官网下载即可 Python 官网&#xff1a;Welcome to Pyt…

ip属地是根据手机号还是位置

在数字化时代&#xff0c;IP地址作为网络世界中的“门牌号”&#xff0c;其属地信息往往与用户的地理位置紧密相关。然而&#xff0c;关于IP属地是如何确定的&#xff0c;是否依赖于手机号还是实际位置&#xff0c;这一话题时常引发讨论。本文将深入探讨IP属地的确定方式&#…

Python编程与在线医疗平台数据挖掘与数据应用交互性研究

一、引言 1.1 研究背景与意义 在互联网技术飞速发展的当下,在线医疗平台如雨后春笋般涌现,为人们的就医方式带来了重大变革。这些平台打破了传统医疗服务在时间和空间上的限制,使患者能够更加便捷地获取医疗资源。据相关报告显示,中国基于互联网的医疗保健行业已进入新的…

如何在 Linux、MacOS 以及 Windows 中打开控制面板

控制面板不仅仅是一系列图标和菜单的集合&#xff1b;它是通往优化个人计算体验的大门。通过它&#xff0c;用户可以轻松调整从外观到性能的各种参数&#xff0c;确保他们的电脑能够完美地适应自己的需求。无论是想要提升系统安全性、管理硬件设备&#xff0c;还是简单地改变桌…

【数据结构】基础知识

目录 1.1 什么是数据结构 1.2数据 1.3 逻辑结构 1.4 存储结构 1.4.1 顺序存储 1.4.2 链式存储 1.4.3 索引存储 1.4.4 散列存储 1.5 操作 1.1 什么是数据结构 数据的逻辑结构以及存储操作 数据结构没有那么复杂&#xff0c;它就教会你一件事&#xff1a;如何更有效的…

2025年中科院分区大类划分公布!新增8155本

2025年中科院分区表变更情况 扩大收录范围 2025年的期刊分区表在原有的自然科学&#xff08;SCIE&#xff09;、社会科学&#xff08;SSCI&#xff09;和人文科学&#xff08;AHCI&#xff09;的基础上&#xff0c;增加了ESCI期刊的收录&#xff0c;并根据这些期刊的数据进行…

【Hive】新增字段(column)后,旧分区无法更新数据问题

TOC 【一】问题描述 Hive修改数据表结构的需求&#xff0c;比如&#xff1a;增加一个新字段。 如果使用如下语句新增列&#xff0c;可以成功添加列col1。但如果数据表tb已经有旧的分区&#xff08;例如&#xff1a;dt20190101&#xff09;&#xff0c;则该旧分区中的col1将为…

Xcode 正则表达式实现查找替换

在软件开发过程中&#xff0c;查找和替换文本是一项常见的任务。正则表达式&#xff08;Regular Expressions&#xff09;是一种强大的工具&#xff0c;可以帮助我们在复杂的文本中进行精确的匹配和替换。Xcode 作为一款流行的开发工具&#xff0c;提供了对正则表达式的支持。本…

我国无人机新增实名登记110.3 万架,累计完成飞行2666万小时

据央视新闻从中国民航局了解到&#xff0c;2024 年我国全年新增通航企业 145 家、通用机场 26 个&#xff0c;颁发无人驾驶航空器型号合格证 6 个、新增实名登记无人机 110.3 万架&#xff0c;无人机运营单位总数超过 2 万家&#xff0c;累计完成无人机飞行 2666 万小时&#x…

【论文阅读】SDA-FC: Bridging federated clustering and deep generative model

论文地址&#xff1a;SDA-FC: Bridging federated clustering and deep generative model - ScienceDirect 代码地址&#xff1a;https://github.com/Jarvisyan/SDA-FC 摘要 联邦聚类&#xff08;FC&#xff09;是集中式聚类在联邦环境中的扩展。关键在于如何在不共享私人数据…

查看APK的公钥,MD5信息

查看md5 sha1 sha256的等信息 keytool -list -printcert -jarfile apk的路径地址 查看公钥私钥信息 keytool -list -rfc --keystore keystore文件的路径地址 | openssl x509 -inform pem -pubkey 把里面的keystore文件的路径地址替换成你的本地文件就可以了 如果报以上错误 就…