学习Uni-app开发小程序Day26

news2024/9/25 7:19:31

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

加载图片减少网络消耗

这里突出这个功能,是根据老师视频上的描述,个人觉得很有必要。这里这个功能是在图片预览的时候,根据前面的设定,我们图片预览,是从缓存中拿到图片,然后在预览界面显示,但是存到缓存的图片是前面全部的图片,这当图片数量过大的时候,哪怕看一张图片就得把全部图片获取到,很耗费网络的,因此这里做了个判断,让打开一张图片,只用获取该图片的前一张后一张,这样每次都是只下载三张,避免全部下载了。
在这里插入图片描述
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
	}

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

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

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

相关文章

如何彻底搞懂组合(Composite)设计模式?

当我们在设计系统对象关系时&#xff0c;有时候会碰到这样一种场景&#xff0c;一个对象中包含了另一组对象&#xff0c;两者构成一种”部分-整体”的关联关系。 正如上图中所展示的&#xff0c;当我们面对这样一种对象关系时&#xff0c;通常都需要分别构建单独的访问方式&…

11.Redis之zset类型

1.zset类型基本介绍 有序描述的是&#xff1a;升序/降序 Set 集合 1.唯一 2. 无序 孙行者,行者孙, 者行孙 >同一只猴~~ List有序的 孙行者,行者孙, 者行孙 >不同的猴~~ zset 中的 member 仍然要求是唯一的!!(score 则可以重复) 排序的规则是啥? 给 zset 中的 member 同…

太狠了,凌晨5点面试。。

(关注数据结构和算法&#xff0c;了解更多新知识) 网上看到一网友发文说收到面试邀请&#xff0c;面试时间竟然是早晨5点&#xff0c;这是要猝死的节奏。有的网友说应该是下午 5 点&#xff0c;如果是下午 5 点直接写下午 5 点就行了&#xff0c;或者写 17 点也行&#xff0c;直…

中医理疗元宇宙 科技赋能中医药产业走向国际市场

基于380亿参数量&#xff0c;对中医药海量文本进行数据训练&#xff0c;实现方剂优化、机制阐释和新适应症的精准发现……日前在天津召开的数智赋能大健康产业新质生产力暨第四届中医药国际发展大会上&#xff0c;由天士力医药集团与华为云共同开发的“数智本草”中医药大模型正…

【再探】设计模式—职责链模式、命令模式及迭代器模式

行为型设计模式研究系统在运行时对象之间的交互&#xff0c;进一步明确对象的职责。有职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式及访问模式共11种。 1 职责链模式 需求&#xff1a;1) 请求能被多…

自动驾驶中的“ImageNet”?CVPR2024新作OccFeat:BEV 自监督预训练

论文标题&#xff1a; OccFeat: Self-supervised Occupancy Feature Prediction for Pretraining BEV Segmentation Networks 论文作者&#xff1a; Sophia Sirko-Galouchenko, Alexandre Boulch, Spyros Gidaris, Andrei Bursuc, Antonin Vobecky, Patrick Prez, Renaud Ma…

Nginx实战(安装部署、常用命令、反向代理、负载均衡、动静分离)

文章目录 1. nginx安装部署1.1 windows安装包1.2 linux-源码编译1.3 linux-docker安装 2. nginx介绍2.1 简介2.2 常用命令2.3 nginx运行原理2.3.1 mater和worker2.3.3 Nginx 的工作原理 2.4 nginx的基本配置文件2.4.1 location指令说明 3. nginx案例3.1 nginx-反向代理案例013.…

紧固件松动的危害及原因——SunTorque智能扭矩系统

智能扭矩系统-智能拧紧系统-扭矩自动控制系统-SunTorque 紧固件松动&#xff0c;这一看似微小的机械问题&#xff0c;实际上可能引发一系列严重的后果。在机械设备中&#xff0c;紧固件扮演着至关重要的角色&#xff0c;它们通过紧固作用将各个部件紧密连接在一起&#xff0c;…

招聘视角,看数据产品经理求职面试技巧

近几年负责数据产品团队&#xff0c;经历团队人员的变迁&#xff0c;进行过几百简历的筛选&#xff0c;近百场社招、校招面试。金三银四的求职/招聘季接近尾声&#xff0c;想把自己招聘数据产品经理的过程进行总结&#xff0c;分享给想找数据产品经理工作的求职者。 一、数据产…

【C语言】数据指针地址的取值、赋值、自增操作避坑

【C语言】数据指针的取值、赋值、自增操作避坑 文章目录 指针地址指针自增指针取值、赋值附录&#xff1a;压缩字符串、大小端格式转换压缩字符串浮点数压缩Packed-ASCII字符串 大小端转换什么是大端和小端数据传输中的大小端总结大小端转换函数 指针地址 请看下列代码&#…

css3实现0.5px边框

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>css3实现0.5px边框</title><s…

HotSpot虚拟机的几个实现细节

文章目录 STW安全点安全区域记忆集与卡表读写屏障 STW 收集器在根节点枚举这步都是必须要暂停用户线程的&#xff08; STW &#xff09;&#xff0c;如果不这样的话在根节点枚举的过程中由于引用关系在不断变化&#xff0c;分析的结果就不准确 安全点 收集器在工作的时候某些…

如何设置XHSC(华大)单片机的IO口中断

XHSC(华大)单片机IO口中断使用 一、代码说明 华大单片机的历程在华大或者小华的官网上都可以下载到,但是我们下载的历程基本注释都是非常简单,有的还没有注释;再加上小华跟华大的历程在代码架构上有所区别,所以新手在直接调用华大或者小华历程后,历程代码的可读性并不…

解析气膜场馆造价—轻空间

随着社会的发展和对环保及时间成本的重视&#xff0c;气膜场馆逐渐成为众多体育场馆的首选建筑模式。气膜建筑包括气膜篮球场、气膜室内足球场、气膜羽毛球场、气膜乒乓球馆、气膜网球场以及气膜滑冰场等&#xff0c;因其多项优势受到广泛应用。 气膜场馆的显著特点 1. 气膜场馆…

不可错过的数据存储指南:JVS物联网平台存储策略详解

在物联网时代&#xff0c;数据的采集、存储和分析成为了关键环节。随着设备点位不断生成大量数据&#xff0c;如何高效地管理和保存这些数据&#xff0c;同时考虑存储成本和后续的数据分析价值&#xff0c;成为了亟待解决的问题。JVS物联网平台提供了灵活多样的存储策略&#x…

安泰电子:使用高压放大器时有哪些需要注意的呢

随着科技的不断进步&#xff0c;高压放大器在各种科学实验、工程应用和产业生产中扮演着重要的角色。然而&#xff0c;由于高压放大器的特殊性&#xff0c;使用时需要特别小心和谨慎。下面将详细介绍使用高压放大器时需要注意的事项&#xff0c;以确保安全、稳定地进行实验和应…

搭载昇腾310NPU的Orange Pi AIpro开箱体验以及深度学习样例测试

Orange Pi AIpro开箱体验以及样例测试 随着人工智能和物联网技术的快速发展&#xff0c;单板计算机&#xff08;Single Board Computer, SBC&#xff09;在创客和开发者社区中越来越受到欢迎。我最近入手了一款高性能的单板计算机——Orange Pi AIpro。 在入手此款AI开发板之…

【BI 可视化插件】怎么做? 手把手教你实现

背景 对于现在的用户来说&#xff0c;插件已经成为一个熟悉的概念。无论是在使用软件、 IDE 还是浏览器时&#xff0c;插件都是为了在原有产品基础上提供更多更便利的操作。在 BI 领域&#xff0c;图表的丰富性和对接各种场景的自定义是最吸引人的特点。虽然市面上现有的 BI 软…

如何理解 Java 类和对象

Java 中的类和对象是学习 Java 编程的基础之一。类是 Java 中的核心概念之一&#xff0c;它提供了一种组织和封装数据以及相关行为的方式。对象是类的实例&#xff0c;它是在运行时创建的&#xff0c;具有特定的状态和行为。 类和对象的概念 1. 类&#xff08;Class&#xff…

Micro SD封装是什么?

我们了解客户对于Micro SD封装的疑问。在这篇文章中&#xff0c;我们将详细解释Micro SD封装是什么&#xff0c;以及其在存储领域的技术原理和应用情况&#xff0c;帮助客户更好地理解这一技术。 1. Micro SD封装的定义 Micro SD封装是指一种特定尺寸的存储芯片封装方式&#x…