五、书架开发--5.书架分组功能开发

news2024/12/23 4:20:53

Dialog和ShelfGroupDialog的基本实现思路:

加入两个组件,一个是Dialog移出分组的弹窗,一个是ShelfGroupDialog,一个是create-api中加入这个ShelfGroupDialog

接下来我们看看这个移动书籍这个对话框的实现原理

如下,用ifNewGroup来判断是否是新更状态,如果是新更状态即展示下图1那种弹窗,否则展示下图2那种弹窗


实现选择一本电子书移到某个分组中

在循环展示出分组名称中绑定一个点击事件onGroupClick

是通过看你点击的edit是什么来判断你点击的是新建分组还是移出分组还是某个分组名,我们这里先讲点击的是某个分组名

该方法中,我们遍历书架中的图书找到被选中的图书们,然后看这本书否存在于我们的被选中的图书中,如果在我们被选中的图书中那么我们就把它过滤掉(即我们选这些书要加入某个分组了,我们就需要把这些书从书架图书列表中删除,因为图书列表中的书是作为状态1的方框图书展示在书架列表的嘛,移到分组中了这里就肯定没有这些书了,即把选中的图书们从书架中过滤掉),然后就会得到一个结果,得到这个结果以后我们就会调一个setShelfList即对书架的数组进行更新。更新完了后我们在then中做操作,我们获取到ground的itemList,即这个分组的图书列表,把选中的图书们即这些要移到某分组的图书们和这个分组以前的图书们做个相加融合,并且加上index标识

实现点击新建分组,添加分组名后这个新的分组就添加到后面

接下来给书架列表过渡动画

想深入了解transition-group可以到vue官网中看

如下给最外层加入transition-group,transition-group和transition不同的是transition-group会给它包含的每一个item都添加class,和transition不同的是它将以实际DOM的形式存在所以加个tag="div"它就会以div的形式存在,增加id即class的id

书架分类列表开发

现在分组页面我们暂时还是点不进去看到分组页面的,现在我们就先把分组页面实现

在views下的store中新建一个StoreCategory.vue,并且到router.js中加入这个path

我们回到ShelfItem中添加点击分组时跳转路由到书架分组页并且传入参数是哪个分组

如下,点击分组时,就会跳转到category这个分组中

这个书架分组页面也是用了ShelfList组件,但是书架首页的图书列表跟分组中图书列表肯定数据是不一样的,所以我们到vuex中定义两个变量,一个是分组列表中的图书数据即shelfCategory,一个是currentType即当前是书架列表页还是分组列表页,以便返回相对应的图书列表数据

在书架首页中就获取书架列表的图书数据,并且设置当前为书架即currentType为1

在分组列表中就获取分组列表的图书数据,并且设置当前为分组即currentType为2

然后到mixin中定义获取分组数据的方法,如下先获取书架图书数据,然后过滤找到这个分组的数据,然后保存到vuex的shelfCategory中

然后在ShelfCategory中调用ShelfList时,传入获取的分组图书列表的数据,才有图书展示出来

接下来做分组中图书移出分组的功能

修改分组功能开发

处理编辑、修改分组、清除缓存、返回按钮图标这些的显示与隐藏

分组中点击编辑的时候,左上角的返回箭头变成修改分组按钮,可以修改分组名称,也可以删除这个分组;当我们加入一个空的分组,右上角没有编辑变成了修改分组

使用计算属性把按钮状态正确显示,如书架中和分组中有图书的情况下都显示编辑按钮,如分组中没有图书时就显示修改分组在右上角不显示编辑等这些

接下来我们实现changeGoup方法,即点击修改分组按钮的方法

如下,给修改分组按钮绑定changeGroup事件,事件中调用create-api中的popup,即创建popup弹窗组件,然后在popup组件中我们可以看到,它是props接收btn,这个btn是一个对象即按钮对象,而且是个数组即可以是好几个按钮传过来,即你需要多少个按钮,按钮什么文字什么类型按钮监听什么事件

如下我们可以看到我们定义了一个createPopupBtn的方法来创建按钮对象,对象中有按钮文本按钮类型和按钮监听什么事件这里是点击事件。然后我们在create-api调popup时就往里传了三个btn对象,如this.createPopupBtn('修改分组名称',()=>{this.changeGroupName()})就表示创建一个叫'修改分组名称'的按钮,然后这个按钮监听点击事件,点击事件触发的时候就去调这里面的changeGroupName方法,类型为normal

接下来我们就实现修改分组名称的按钮和删除分组的点击事件

如下调用create-api的dialog,并且往里传这两个参数,这两个参数一个是展示移动书籍弹窗还是新建分组弹窗,一个参数是这个分组的名称,即让弹窗中直接展示这个分组名称为当前分组名称

这样点击修改分组的修改分组名称后就出现下面这个弹窗了

点击修改分组的删除分组按钮后删除分组的方法如下,展示一个新的popup分组

再做deleteGroup方法,删除分组主要做两件事件,第一件就是把分组中的图书移到书架中,第二步是删除分组

移出图书我们写过moveOutFromGroup,就是把图书移出分组放到书架中,所以我们这里就直接用它

如下,deleteGroup中如果当前分组不为空则先把所有图书置为被选中状态,然后把图书们全部移出分组放到书架中,然后再onComplete中删除这个分组

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

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

相关文章

Python 标准库functools高阶函数用法

目录 1. partial 用法示例 2. reduce 用法示例 3. total_ordering 用法示例 4. cmp_to_key 用法示例 5. lru_cache 用法示例 6. singledispatch 用法示例 7. update_wrapper 用法示例 8. partialmethod 用法示例 9. singledispatchmethod 用法示例 10. cache 用法示例…

HoloLens2开发时,VS2022的组件和模块配置

HoloLens2开发的时候,VS2022的安装和配置清单(有的模块可能不是必须的模块) 一、大的模块配置 二、各模块组件的配置

详解运算符重载——探索运算符重载的应用

前言:运算符重载是面向对象的一个重要的知识点。我们都知道内置类型可以进行一般的运算符的运算。但是如果是一个自定义类型, 这些运算符就无法使用了。那么为了解决这个问题, 我们的祖师爷就在c中添加了运算符重载的概念。 本篇主要通过实例——日期类的…

Emacs之增加/取消输入括号自动匹配(一百三十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

安卓apk文件签名

一、环境准备 链接: https://pan.baidu.com/s/1D3WxIL5M5ewyFNTqJzARPw 提取码: pd6w 上篇博文编译的apk文件 1、docker build -t android-build:v1.0.1 . 直接制作镜像 2、docker run -it android-build:v1.0.1 /bin/bash 运行进入容器 指定sdk的路径,然后直接…

AI - 提示词意外收获 (5)

提示词: A soft pink rose with opalescent leaves, located in a surreal desert under the light of a binary star system, The dual shadows and contrasting lights create a dreamlike quality, emphasizing the roses unique beauty,翻译: 一种柔软的粉红…

RESA 车道线检测模型-debug分析

车道线检测模型 RESA 该模型只有一个关键点就是resa模块,把这个想清楚就没什么了,下面看代码 class RESA(nn.Module):def __init__(self, cfg):super(RESA, self).__init__()# self.iter cfg.resa.iter# chan cfg.resa.input_channel# fea_stride c…

绝地求生:PUBG七周年:杜卡迪联动即将到来!

4.13号PUBG官博放出来一个图片让大家猜测是什么东西。 结合之前绝地求生的官方的公告,该载具皮肤毫无疑问就是著名摩托车品牌:杜卡迪。 这篇文章就来简单分析一下本次即将到来的摩托车联动的具体细节。 品牌介绍 杜卡迪(Ducati Motor &…

【测试开发学习历程】python常用的模块(中)

目录 5 time模块 5.1、Python中的四种格式的时间: 5.2、time模块中的常用函数 6 I/O流操作 6.1 创建文件 6.2 读取一个文件存入到另外一个文件 6.3 with open as 结构 6.4 open和with open as的区别 7 Excel的操作模块-openpyxl 7.1、新建Excel文件进行读…

PTA 编程题(C语言)-- 判断素数

题目标题: 判断素数 题目作者 陈越 浙江大学 本题的目标很简单,就是判断一个给定的正整数是否素数。 输入格式: 输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于…

渗透测试实战——第一站

仅供交流学习使用,请勿用于非法用途 前言:刚学了sql注入,只听理论总感觉没啥用,今天花了一半个多小时,去尝试寻找有漏洞的网站,最终找到了一个;实践是检验真理的唯一标准。 我是通过黑客常用语法…

网络基础先导

前言:最好在牢固前面几大件(编程语言、数据结构、操作系统),并且您有一个服务器的基础上(我使用的是腾讯云中配置最低的服务器)再来学习本系列的网络知识。 1.网络发展简要 下面就是简单提及一些概念而已&…

Shortened LLaMA:针对大语言模型的简单深度剪枝法

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 论文标题 & 发表会议:Shortened LLaMA: A Simple Depth Pruning for Large Language Models(ICLR 2024 Workshop) 论文地址:https://arxiv.org/abs/…

绝地求生:PWS韩国联赛结束:KDF夺冠,DNW三年来首次错失世界赛

4.14号PWS韩国联赛结束了为期3天的决赛,KDF战队以73击杀117分获PWS第一阶段冠军,队内Heaven获MVP,DK_seoul伤害王。 常规赛靠前的DNW和Gen.G决赛均发挥失常都没有进入前八,其中上届世界冠军DNW在双S核心出走后时隔三年首次错失世界…

OpenHarmony轻量系统开发【4】编写第一个程序、启动流程分析

摘要:本文简单介绍如何编写第一个hello world程序,以及程序是被执行的 适合群体:适用于Hi3861开发板,启动流程分析 4.1编写第一个程序 编写一个hello world程序比较简单,可以参考官网: https://gitee.c…

【位运算 贪心】2835. 使子序列的和等于目标的最少操作次数

算法可以发掘本质,如: 一,若干师傅和徒弟互有好感,有好感的师徒可以结对学习。师傅和徒弟都只能参加一个对子。如何让对子最多。 二,有无限多1X2和2X1的骨牌,某个棋盘若干格子坏了,如何在没有坏…

粤嵌—2024/3/21—Pow(x,n)

代码实现&#xff1a; 方法一&#xff1a;常规解法——超时 double myPow(double x, int n) {if (n 0) {return 1.0;}if (x 1.0) {return x;}double num x;if (n > 0) {for (int i 1; i < n; i) {num num * x;}} else {n -n;for (int i 1; i < n; i) {num num…

Java编译期注解处理器AbstractProcessor使用

我们接触的注解主要分为以下两类 运行时注解&#xff1a;通过反射在运行时动态处理注解的逻辑编译时注解&#xff1a;通过注解处理器在编译期动态处理相关逻辑 编译期注解我们常用的有Lombok&#xff0c;在class文件中自动生成get和set方法 解编译期处理流程最关键的一个类就…

springMVC理解

springMVC是一种思想&#xff0c;将软件划分为&#xff0c;模型Model&#xff0c;视图View&#xff0c;控制器Controller。 MVC的工作原理&#xff1a;用户通过前端视图页面&#xff0c;发送请求到服务器&#xff0c;在服务器中请求被Controller接收&#xff0c;Controller调用…

JVM之JVM栈的详细解析

Java 栈 Java 虚拟机栈&#xff1a;Java Virtual Machine Stacks&#xff0c;每个线程运行时所需要的内存 每个方法被执行时&#xff0c;都会在虚拟机栈中创建一个栈帧 stack frame&#xff08;一个方法一个栈帧&#xff09; Java 虚拟机规范允许 Java 栈的大小是动态的或者是…