五、书架开发--3.弹出框功能开发、离线缓存功能开发

实现弹出框真实业务逻辑

私密阅读tab业务逻辑

1、根据点击的tab不同,从而展示出不同的popup弹窗

每个tab中都有自己的index,点击的时候获取这个index,就可以知道当前点击的是哪个tab,然后用switch-case来根据不同的index展示不同的popup弹窗。

首先在点击tab事件中,有图书被选中了才行,所以没有图书被选中就return,然后需要根据你选中的是哪个tab从而展示不同的弹窗,所以我们需要通过switch-case如下根据tab的index不同从而展示不同的东西

我们先做点击tab的逻辑,点击tab1就展示tab1的弹窗,我们把展示tab1弹窗封装为一个方法,该方法中就是我们之前做的调用create-api的this.popup()然后往里传标题和按钮文字这些;然后开启按钮我们需要做开启私密阅读的相关逻辑我们先封装为setPrivate()方法,取消按钮我们就关闭弹窗就好了所以调用hidePopup()

2、私密阅读中点击开启按钮的逻辑实现

点击(关闭)私密阅读这个tab,出现弹框后点击里面的开启按钮,从而需要展示的交互逻辑:

开启私密阅读的逻辑其实就是,看我们当前选中的图书们中每个图书的private字段(private为true表明这本书是私密阅读状态,为false即不是私密阅读状态)。

如果都是私密阅读状态,那我们tab中展示的文本应该是关闭私密阅读,然后我们点击关闭私密阅读中的开启按钮,则是要关闭私密阅读,所以被选中的书们会变成不是私密阅读状态的图书,所以我们要把这些被选中的图书们的private字段都置为false,最后展示toast的提示文本;

如果其中有书不是私密阅读状态,那我们tab中展示的文本应该是开启私密阅读,然后我们点击私密阅读中的开启按钮,则是要开启私密阅读,所以被选中的书们会变成私密阅读状态的图书,所以我们要把这些被选中的图书们的private字段都置为true,最后展示toast的提示文本

在做真实项目的时候,这个private一旦置为false以后我们还要调用一个接口回传到数据库里面,然后后端给我们做一些处理。

这里分为以下几点:

第一点:需要判断被选中的图书们的私密阅读状态

我们设计一个计算属性isPrivate(){}来计算被选中的图书们,循环遍历用every判断。如果图书们都是私密阅读状态,那么就返回true;如果图书们中但凡有一个不是私密阅读状态,那么就返回false

第二点:需要定义一个isPrivate变量来记录被选中图书们此时的私密阅读状态应该是什么

因为很多时候要知道这些被选中图书们的私密状态从而做一些逻辑判断,我们定义一个变量记录它就方便使用,不然得去一遍遍循环判断被选中图书们的状态不方便。

定义一个变量叫isPrivate,因为这个变量随时会变所以用let。然后根据前面的计算属性isPrivate()判断,如果计算属性中返回的是true则说明图书们都是私密阅读状态,后面我们点击的就是开启私密阅读,所以就把定义的这个变量isPrivate置为false(表示不需要开启私密阅读此时是私密阅读状态);如果计算属性中返回的是false则说明图书们有的不是私密阅读状态,后面我们点击的就是开启私密阅读,所以就把定义的这个变量isPrivate置为true(表示需要开启私密阅读此时不是私密阅读状态)

第三点:修改被选中的图书们的private字段

去遍历被选中的图书们,将isPrivate变量赋值给图书的private字段;然后你修改了书架数据,所以我们修改后把书架数据缓存到localstore中

第四点:tab中展示'私密阅读'还是'关闭私密阅读'

根据isPrivate变量判断,如果是true则表示当前被选中的图书们都是私密阅读状态,那么tab中就应该展示'关闭私密阅读';如果是false则表示当前选中的图书们有的是非私密阅读状态,那么tab中就应该展示'私密阅读'

第五点:点击popup弹窗按钮后弹出不同文本的toast弹窗

根据isPrivate变量判断,如果是true则表示当前被选中的图书们都是私密阅读状态,那么tab中是关闭私密阅读,所以点击popup弹框的开启按钮后,应该是展示'关闭私密阅读成功'的提示;如果是false则表示当前被选中的图书们有的是非私密阅读状态,那么tab中是私密阅读,所以点击popup弹框的开启按钮后,应该是展示'开启私密阅读成功'的提示;

如下,点击第五本书,当前这本书是非私密阅读状态,然后tab正确展示私密阅读,然后点击私密阅读,点击开启(即要把这本书设置为私密阅读),然后就可以看到这本书的private字段为true即为私密阅读状态了,而且toast展示已开启私密阅读

再次点击这本书,此时这本书是私密阅读状态,此时tab就显示关闭私密阅读,点击开启即展示关闭私密阅读成功啦

3、缓存弹出框实现思路也类似

1. 设置根据点击的tab2展示缓存弹窗

2. tab2的popup弹窗的内容

3. 定义一个计算属性判断被选中图书们是否全是缓存状态

4. 点击弹窗开启/删除按钮要实现的逻辑、toast弹框提示

5. tab栏文字的切换

上面状态的切换完成了,但是我们还要完成实际的下载,就先留着等一下再做

4、加入/移除书架

也是同理

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

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

相关文章

SQL语言

一、DDL数据库定义语言 1、登录mySQL mysql -u"用户名" -p"密码" -h"登录地址 -h:默认为本机 示例: 2、查看当前存在的数据库 show databases; 示例: 3、创建数据库database create…

泰坦尼克号幸存者预测

泰坦尼克号幸存者预测 1、特征工程概述2、数据预处理3、特征选择与提取4、建模与预测 1、特征工程概述 在上篇 泰坦尼克号幸存者数据分析 中,我们对泰坦尼克号的幸存者做了数据分析,通过性别、年龄、船舱等级等不同维度对幸存者进行了分类统计&#xff0…

Leetcode算法训练日记 | day25

一、组合总和Ⅲ 1.题目 Leetcode:第 216 题 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺…

2023年MathorCup数学建模D题航空安全风险分析和飞行技术评估问题解题全过程文档加程序

2023年第十三届MathorCup高校数学建模挑战赛 D题 航空安全风险分析和飞行技术评估问题 原题再现 飞行安全是民航运输业赖以生存和发展的基础。随着我国民航业的快速发展,针对飞行安全问题的研究显得越来越重要。2022 年 3 月 21 日,“3.21”空难的发生…

[CSS]使用方式+样式属性

层叠样式表(Cascading Style Sheets),与HTML一样,也是一种标记语言,其作用就是给HTML页面标签添加各种样式,定义网页的显示效果,将网页内容和显示样式进行分离,提高了显示功能。简单…

Jenkins使用-绑定域控与用户授权

一、Jenkins安装完成后,企业中使用,首先需要绑定域控以方便管理。 操作方法: 1、备份配置文件,防止域控绑定错误或授权策略选择不对,造成没办法登录,或登录后没有权限操作。 [roottest jenkins]# mkdir ba…

libftdi1学习笔记 1 - 打开/关闭设备

目录 1. 获取版本信息 2. 创建上下文对象 3. 查找FTDI设备 4. 获取字符串描述符 5. 指定接口 6. 打开设备 6.1 指定VID/PID的方式 6.2 指定描述符的方式 6.3 指定描述符和设备索引的方式 6.4 其他方式 7. 关闭设备 libftdi1是一个升级版本的库(旧的版本是…

K8s 命令行工具

文章目录 K8s 命令行工具kubectl 工具在任意节点使用kubectl方式创建对象命令显示和查找资源更新资源修补资源编辑资源Scale 资源删除资源查看pod信息节点相关操作 K8s 命令行工具 在搭建集群的时候,我们通过yum 下载了kubeadm kubelet kubectl 三个命令行工具&…

华为云配置安全组策略开放端口

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C 🔥座右铭:“不要等到什么都没有了,才下…

这家动画公司,女神表情灵动秒杀90%的国漫女角色!

当3D国漫市场逐渐加入“内卷”的行列,从大的底层创作引擎UE的运用迭代,到细节的人物动捕、面捕技术的实际结合,在这场内卷的百舸争流中,涌现出一家家风格各异的头部国漫制作公司:有整体偏写实风格的原力动画&#xff0…

乌龟棋(c++实现)

题目 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。 乌龟棋的棋盘只有一行,该行有 N个格子,每个格子上一个分数(非负整数)。 棋盘第 1 格是唯一的起点,第 N 格是终点,游戏要求玩家控制一个…

多媒体互动装置如何助力智慧城市展厅的信息化建设?

随着现代化科技技术的发展,智慧城市的建设概念与实施也日益成熟,其中智慧城市展厅便是用于展示智慧城市理念、技术和规划的重要平台,而应用在其中的多媒体互动装置,更是起着重要的作用,它们能够让观众更直观地了解和体…

天空盒1-天空盒的实现原理

天空盒是一种常用的实时渲染技术,用于在三维场景中模拟远处环境,例如天空、山脉或城市等。它通过将一个立方体贴图(也称为环境贴图)投影到场景的背景中,给人一种无限远的感觉。以下是天空盒的实现原理: 创建…

对策略设计模式的一个小扩展

在基于产品的二次开发过程中,有时需要对产品项目中预制的某一个策略实现作些修改。但又不想修改策略的路由信息。以免调用方需要更新参数或修改代码等。基于此,对产品的策略接口作了一个小扩展,加上了一个可替换相同策略的boolean函数。效果还…

统一登陆实现简化流程

比如,前端使用vue,后端使用abp框架 则首先需要一个统一的中央认证服务,来给每个后端服务通信以验证用户凭据,并返回访问令牌, 中央认证服务保存各自后端的令牌,后端服务使用JWT或其他机制验证令牌的有效性。 1、前端登录请求中央认证服务,返回认证服务自己的令牌 2、…

AI识别技术详解 --在windows环境中部署基于YOLO v8模型的目标检测

首先 YOLO是一个端到端的目标检测算法,一次前向传播计算,实现图像的多目标检测任务,我么可以在ultralytics官网上查看YOLO的各个版本(v1-v8)以及源码 使用YOLO v8提供的python接口,训练一个佩戴安全帽的目标…

解释Python中的并发和并行编程

解释Python中的并发和并行编程 在Python编程中,并发(Concurrency)和并行(Parallelism)是两个经常被提及的概念,它们都与程序的执行方式有关,但各自有着不同的含义和应用场景。下面我们将详细解…

无人机空气动力学

在现代科技的飞速发展中,无人机已经成为了备受关注的热门话题。它们能够在天空中自由翱翔,执行各种复杂的任务,这一切都离不开空气动力学的奇妙原理。本文将深入剖析无人机的空气动力学,带您领略无人机在空中飞行的神秘世界。 引…

关于Unity使用DLL的说法

最近在研究一些构建依赖相关的,特别是Unity在不同平台上使用第三方类库时候的问题。简单查了一下资料,其实不难理解,这里只是简单的记录一下,弄明白一个简单的道理就行了。 为什么有的第三方库(DoTween),NewtonSoft等的dll库&…

数组算法——查询位置

需求 思路 使用二分查找找到第一个值,以第一个值作为界限,分为左右两个区间在左右两个区间分别使用二分查找找左边的7,:找到中间位置的7之后,将中间位置的7作为结束位置,依次循环查找,知道start>end,返回…