学习Uni-app开发小程序Day26

这一章学习的内容细节较多,主要是分为:首次加载减少网络消耗、获取图片的详细信息、图片的评分和避免重复评分、将图片下载到本地并且获取设备的授权

加载图片减少网络消耗

这里突出这个功能,是根据老师视频上的描述,个人觉得很有必要。这里这个功能是在图片预览的时候,根据前面的设定,我们图片预览,是从缓存中拿到图片,然后在预览界面显示,但是存到缓存的图片是前面全部的图片,这当图片数量过大的时候,哪怕看一张图片就得把全部图片获取到,很耗费网络的,因此这里做了个判断,让打开一张图片,只用获取该图片的前一张后一张,这样每次都是只下载三张,避免全部下载了。
在这里插入图片描述
remimage:这是点击图片预览的数组,只记录图片列表的下标、
…new Set():这是将数组进行set,就是去除重复
这里还要考虑一个点,当是第一个和最后一个的时候,前面的后面会出现负数和超限的,因此这里使用冒泡排序法,当是第一个的时候,就让下载最后一个,当是最后一个的时候,就下载第一个

//当前的方法是把重复的代码放在一块,方便维护和减少代码量
	function remimageFn (){
		classInfo.value=classList.value[currentIndex.value];
		queryParams.classid=classInfo.value.classid;
		queryParams.wallId=classInfo.value._id;
		remimage.value.push(
		currentIndex.value<=0?classList.value.length-1:currentIndex.value-1,
		currentIndex.value,
		currentIndex.value>=classList.value.length-1?0:currentIndex.value+1)
		remimage.value=[...new Set(remimage.value)]
	}

这里把代码放在方法中,在使用的地方直接调用方法,我们只用在从上一页获取数据那里和滑动的时候调用该方法,
然后再html中,使用includes就可以了,这里是判断remimage里面是否有当前的下标
在这里插入图片描述

获取图片的详细信息

现在点击图片预览后,会得到当前图片的信息,那就根据接口,访问图片的详细信息,这里不写接口了,就写实现代码了

	classInfo.value=classList.value[currentIndex.value];

这是获取当前的图片的信息,在信息中就存在弹出框上需要现实的信息

图片的评分和避免重复评分

在点击评分后,可以给图片评分,一个ip评过后就不允许在修改了,这就需要进行判断了,这里老师给的思路是,在当前评分成功后,就评分添加到原缓存中,给添加一个字段,然后判断是否有这个字段,有这个字段就是已经评分过了,如果没有,那就可以评分了

// 评分弹窗
	const clickScore = () => {
		if(classInfo.value.userScore){
			isScore.value=true
			userScore.value=classInfo.value.userScore
		}
		scorePopup.value.open();
		
	}
	// 关闭评分弹窗
	const clickScoreClose = () => {
		isScore.value=false
		scorePopup.value.close();
	}
// 确认评分
	const submitScore = () => {
		console.log("评分了");
		uni.showLoading({
			title:"加载中...."
		})
		queryParams.userScore=userScore.value;
		postSetupScore();
		
	}
	//上传修改评分的网络访问
	const postSetupScore=async ()=>{
		let res=await apiSetupScore(queryParams)
		// classInfo.value.score=userScore;
		uni.hideLoading();
		if(res.errCode===0){
			uni.showToast({
				title:"评分成功",
				icon:"none"
			})
			//这里的思路是:当评分数据上传成功后,将评分数据作为一个新的字段,加到数据源中,然后把数据源更新到缓存中
			classList.value[currentIndex.value].userScore=userScore.value;
			uni.setStorageSync("storageClassList",classList.value)
			clickScoreClose();
		}
	}

然后在评分弹框中药设定评分组件和确定按钮,成功后不让在点击修改
在这里插入图片描述

将图片下载到本地并且获取设备的授权

下载图片,这只支持小程序,所以这里需要使用分类编译的,这里就直接上代码了,在点击下载按钮的时候,直接使用点击事件。

	const clickDownload=()=>{
		// #ifdef H5
			uni.showModal({
				content:"请长按下载图片",
				showCancel: false
			})
		// #endif
	
		// #ifndef H5
		//给个友好的提示
		uni.showLoading({
			title:"加载中...",
			mask: true
		})
		uni.getImageInfo({
			src:classInfo.value.picurl,
			success: (res) => {
				uni.saveImageToPhotosAlbum({
					filePath:res.path,
					success: (res) => {
						
					},
					fail: (err) => {
						if (err.errMsg == 'saveImageToPhotosAlbum:fail cancel') {
							uni.showToast({
								title: '保存失败,请重新点击下载',
								icon: "none"
							})
							return;
						}
						uni.showModal({
							title: '提示',
							content: '需要保存到手机相册授权',
							// showCancel: false,
							// cancelText: '',
							// confirmText: '',
							success: res => {
								if(res.confirm){
									console.log("确认授权了");
									uni.openSetting({
										success: (setting) => {
											if(setting.authSetting[scope.writePhotosAlbum]){
												uni.showToast({
													title:"获取授权成功",
													icon:'none'
												})
											}else{
												uni.showToast({
													title:"获取授权失败",
													icon:'none'
												})
											}
										}
									})
								}
							},
							fail: () => {},
							complete: () => {}
						});
					},
					complete: () => {
						uni.hideLoading()
					}
					
				})
			}
		})
			
		// #endif
	}

以上就是这一章节学习的内容,欢迎指正!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spark介绍

Spark简介 Spark,是一种通用的大数据计算框架,正如传统大数据技术Hadoop的MapReduce、Hive引擎,以及Storm流式实时计算引擎等. Spark是加州大学伯克利分校AMP实验室(Algorithms Machines and People Lab)开发的通用内存并行计算框架,用于构建大型的、低延迟的数据分析应用程序…

Python图像处理库全面详细解析

目录 引言 PIL和Pillow&#xff1a;基础但强大的图像处理 PIL到Pillow的演变 功能亮点 实际应用案例 Pillow的适用场景 结论 ​编辑 OpenCV&#xff1a;计算机视觉的瑞士军刀 OpenCV的核心特点 功能亮点 实际应用案例 OpenCV的适用场景 结论 ​编辑 Scikit-Imag…

pytest:指定测试用例执行顺序

在自动化测试中&#xff0c;测试用例的执行顺序有时对测试结果具有重要影响。本文将介绍如何在pytest框架中使用pytest-ordering插件以及Collection hooks来控制测试用例的执行顺序。 方式1&#xff1a; 使用pytest-ordering插件控制执行顺序 1.1 安装pytest-ordering插件 首…

Python编程的黑暗魔法:模块与包的神秘力量!

哈喽&#xff0c;我是阿佑&#xff0c;今天给大家讲讲模块与包~ 文章目录 1. 引言1.1 模块化编程的意义1.2 Python中模块与包的概念概述 2. 背景介绍2.1 Python模块系统模块的定义与作用Python标准库简介 2.2 包的结构与目的包的定义与目录结构包在项目组织中的重要性 3. 创建与…

用three.js+echarts给公司写了一个站点数据大屏系统经验总结

时间过的好快,参加公司的新项目研发快一年了,五一机器人项目首秀,我们遇到了高并发集中下单情景,然后海量数据处理场景来了,给我在后端领域的高并发实践业务上画上了漂亮的一笔经验。人都是在磨练中成长,我很感谢这次给我的机会,虽然有点累,但也有点小成就。正好现在有…

基于RK3568核心板的雷视融合一体机,助力交通管理智能化升级

随着5G网络与智慧交通车路协同系统在全国各点的落地&#xff0c;作为提升交通安全的前沿技术方案也愈发受到重视。 在交通信控领域&#xff0c;以往的感知技术、无论是地磁、线圈还是摄像头&#xff0c;功能都仅仅局限于数清经过了多少车辆&#xff0c;无法满足交通数字化管理…

aosp14的分屏接口ISplitScreen接口获取方式更新-学员疑问答疑

背景&#xff1a; 有学员朋友在学习马哥的分屏pip自由窗口专题时候&#xff0c;做相关分屏做小桌面项目时候&#xff0c;因为原来课程版本是基于android 13进行的讲解的&#xff0c;但是现在公司已经开始逐渐进行相关的android 14的适配了&#xff0c;但是android 14这块相比a…

挖矿宝藏之系统日志

什么是日志&#xff1f; 日志是指系统或应用程序在运行过程中产生的记录文件&#xff0c;这些文件记录了系统或应用程序的运行情况、错误信息、用户操作等。 日志的主要作用 记录信息&#xff1a;日志可以记录系统或应用程序的启动、运行、停止等状态信息&#xff0c;以及用户的…

sourcetree推送到git上面

官网&#xff1a;Sourcetree | Free Git GUI for Mac and Windows 下载到1次提交 下载后打开 点击跳过 下一步 名字邮箱 点击clone 把自己要上传的代码粘贴到里面去 返回点击远程->点击暂存所有 加载完毕后&#xff0c;输入提交内容提交 提交完成了 2次提交 把文件夹内的…

java方法负载问题

先介绍一下方法的重载 下面是例子 方法名都为sum而形参是不同的 记住&#xff01; 是否为重载关系 1在同一个类里面 2形参不同&#xff08;与返回值无关&#xff09; 3方法名一样 第一个图为什么错&#xff1f; 答案&#xff1a;虽然在同一个类里面&#xff0c;并且方法名…

Istio ICA考试之路---5-2

Istio ICA考试之路---5-2 1. 题目2. 解题3. 容易遇见的错误3.1 错误13.2 错误2 1. 题目 Using Kubernetes context cluster-2 The httpbin workload is running with a client named sleep in the troubleshoot-1 namespace. Issue a service call from the sleep client.ku…

单条16g和双条8g哪个好

单条16g和双条8g各有优劣,具体选择要根据个人需求和电脑配置来决定。 以下是一些参考信息: •单条16g内存的价格比双条8g内存的价格低,而且16g的内存容量大,一条内存十分的方便。 •两条8g内存可以组成双通道,电脑运行速度要快一些。 •对于普通使用电脑的人群与热衷于…

ubuntu安装Stable Video Diffusion(SVD)让图片动起来

目录 写在前面 一、克隆或下载项目 二、下载预训练模型 三、创建环境 四、安装依赖 五、启动项目 六、解决报错 1.预训练模型下不来 2.TiffWriter.write() got an unexpected keyword argument fps 3.安装ffmpeg 4.No module named scripts 七、测试 写在前面 Stab…

一、Servlet和JSP技术概述

注&#xff1a;该系列笔记是用于我在 《Servlet 与 JSP 核心编程》这本书中的学习笔记&#xff0c;无其他意思&#xff0c;侵权请联系2082045221qq.com删除。 ​ 第一章内容较少&#xff0c;所以暂时有用的笔记也不多。 1.1、Servlet 的功用&#xff1a; ​ Servlet 是运行在…

ClickHouse架构概览 —— Clickhouse 架构篇(一)

文章目录 前言Clickhouse 架构简介Clickhouse 的核心抽象列和字段数据类型块表 Clickhouse 的运作过程数据插入过程数据查询过程数据更新和删除过程 前言 本文介绍了ClickHouse的整体架构&#xff0c;并对ClickHouse中的一些重要的抽象对象进行了分析。然后此基础上&#xff0…

【面试】PWM(脉冲宽度调制)相关问题 ——长期更新

1、PWM调节原理 答&#xff1a;通过改变信号的高电平和低电平的持续时间比例来控制输出信号的平均功率或电压。 2、PWM占空比定义 答&#xff1a;在一个脉冲周期内&#xff0c;高电平的时间占整个周期时间的比例。 3、PWM波形的周期和调节精度由谁决定 答&#xff1a;当计数…

防止CSRF攻击

防止CSRF攻击 跨站点请求伪造&#xff08;Cross-Site Request Forgery&#xff0c;简称CSRF&#xff09;是一种常见的网络攻击类型。当用户在受信任的站点上通过身份验证后&#xff0c;访问攻击者精心准备的恶意网站、电子邮件、博客、即时消息或程序时&#xff0c;可能会导致…

软考 系统架构设计师系列知识点之SOME/IP与DDS(1)

本文内容参考&#xff1a; 车载以太网 - SOME/IP简介_someip-CSDN博客 https://zhuanlan.zhihu.com/p/369422441 什么是SOME/IP?_someip-CSDN博客 SOME/IP 详解系列&#xff08;1&#xff09;—— 概述_some ip-CSDN博客 深入浅出SOME/IP协议&#xff1a;基本概念和原理-…

Node.js笔记(万字总结)

目录 前言 1.node介绍与使用 1.1 Node介绍 1.2 node.js的优势 1.3 node的安装 1.4 检验是否成功安装 1.5 第一个应用 1.5.1 服务器代码 server.js 1.5.2 完整代码 1.5.3 运行 1.5.4 测试 2.获取参数 3.模块系统 1.模块介绍 2.xiaoyu.js 3.xiaoyu.js完整代码 4…

单兵组网设备+指挥中心:集群系统技术详解

一、单兵设备功能特点 单兵组网设备是现代通信技术的重要成果&#xff0c;旨在为单个作战或工作单元提供高效的通信和数据传输能力。其主要功能特点包括&#xff1a; 1. 便携性&#xff1a;设备轻巧&#xff0c;便于单兵携带和使用&#xff0c;适应各种复杂环境。 2. 通信能…