黑马头条vue2.0项目实战(五)——首页—频道编辑

news2024/10/1 7:29:21

目录

1. 使用页面弹出层

1.1 页面弹出层简单使用

1.2 创建频道编辑组件

1.3 页面布局

2. 展示我的频道

3. 展示推荐频道列表

3.1 获取所有频道

3.2 处理展示推荐频道

4. 添加频道

5. 编辑频道

5.1 处理编辑状态

5.2 切换频道

5.3 让激活频道高亮

5.4 删除频道

6. 频道数据持久化

6.1 业务分析

6.2 添加频道

6.3 删除频道

7. 正确的获取首页频道列表数据


1. 使用页面弹出层

1.1 页面弹出层简单使用

Vant 中内置了 Popup 弹出层 组件。

  • 在 data 中添加一个数据用来控制弹层的显示和隐藏

  • 在首页模板中的频道列表后面添加弹出层组件

1.2 创建频道编辑组件

① 创建 views/home/components/editChannel.vue 

② 在首页中加载注册

③ 在弹出层中使用频道编辑组件

1.3 页面布局

  • 我的频道标题 cell 单元格组件

  • 我的频道列表 Grid 宫格组件

  • 频道推荐标题 cell 单元格组件
  • 频道推荐列表 Grid 宫格组件

2. 展示我的频道

① 在父组件中把 channels 传递给频道编辑组件

② 在频道编辑组件中声明接收父组件的 myChannels 频道列表数据并遍历展示

3. 展示推荐频道列表

没有用来获取推荐频道的数据接口,但是我们有获取所有频道列表的数据接口。

所以:所有频道列表 - 我的频道 = 剩余推荐的频道

实现过程所以一共分为两大步:

  • 获取所有频道

  • 基于所有频道和我的频道计算获取剩余的推荐频道

3.1 获取所有频道

① 封装数据接口

② 在编辑频道组件中请求获取所有频道数据

3.2 处理展示推荐频道

思路:所有频道 - 用户频道 = 推荐频道(computed 计算属性)

① 封装计算属性筛选数据

  • filter 过滤数组,过滤出符合条件的数组
  • 数组的 find 方法返回数组中第一个满足提供的测试函数的元素。如果没有找到符合条件的元素,返回 undefined。

② 模板绑定

4. 添加频道

思路:

  • 给推荐频道列表中每一项注册点击事件

  • 获取点击的频道项

  • 将频道项添加到我的频道中

  • 将当前点击的频道项从推荐频道中移除

    • 不需要删除,因为我们获取数据使用的是计算属性,当我频道发生改变,计算属性重新求值了

① 给推荐频道中的频道注册点击事件

② 在添加频道事件处理函数

  • 属性 props 是只读的,myChannels 是由父组件 channels传递过来的。不可以直接 this.myChannels.push(channel) 不能直接修改子组件的属性。

  • 子向父传值。

  • 子组件的事情处理函数去触发 emit 父组件里的自定义事件。

  • 将当前点击的频道项从推荐频道中移除?不需要删除,recomendChannels 是计算属性,当我频道发生改变,计算属性重新求值了。

5. 编辑频道

思路:

  • 给我的频道中的频道项注册点击事件

  • 在事件处理函数中

    • 如果是编辑状态,则执行删除频道操作

    • 如果是非编辑状态,则执行切换频道操作

5.1 处理编辑状态

① 在 data 中添加数据用来控制编辑状态的显示

② 在我的频道项中添加删除图标,定位到合适的位置

③ 处理点击编辑按钮

5.2 切换频道

功能需求:在非编辑器状态下切换频道。

① 给我的频道项注册点击事件

② 处理函数

③ 在父组件中监听处理自定义事件

5.3 让激活频道高亮

思路:

  • 将首页中的激活的标签索引传递给频道编辑组件

  • 在频道编辑组件中遍历我的频道列表的时候判断遍历项的索引是否等于激活的频道标签索引,如果一样则作用一个高亮的 CSS 类名

① 将首页组件中的 active 传递到频道编辑组件中

② 在频道编辑组件中声明 props 接收

③ 判断遍历项,如果 遍历项索引 === active,则给这个频道项设置高亮样式

  • v-bind:class 语法的理解:

    • 动态一个对象,对象中的 key 表示要作用的 css 类名

    • 对象中的 value 要计算出布尔值

      • true 则表示作用该类名

      • false 则表示不作用该类名

5.4 删除频道

功能需求:在编辑状态下删除频道。

  • 第一个频道 “推荐” 不允许删除。

  • 如果删除的频道在激活的频道前面,那么删除该频道后,当前激活频道任然不变。也就是说点击的索引值小于激活的索引值。

  • 分三种情况

    • 删除的元素在当前激活元素之后,直接删除

    • 删除的元素在当前激活元素之前,将激活的索引值 - 1

    • 删除当前激活的元素后,激活的元素应该是删除元素的后一个元素,这样用户体验会更加自然,因为删除操作通常会使当前视图移动到下一个可用的元素。

  • 定义一个变量 isBeforeActiveIndex 表示要删除的索引是否在激活的索引前面

  • myChannels 是从父组件传递过来的属性,是只读的,要删除必须通过子传父技术,在父组件中删除。

6. 频道数据持久化

6.1 业务分析

① 频道编辑这个功能,无论用户是否登录用户都可以使用。

不登录也能使用

  • 数据存储在本地

  • 不支持同步功能

登录也能使用

  • 数据存储在线上后台服务器

  • 更换不同的设备可以同步数据

6.2 添加频道

思路:

  • 如果未登录,则存储到本地

  • 如果已登录,则存储到线上

    • 找到数据接口

    • 封装请求方法

    • 请求调用

① 封装添加频道的请求方法

② 修改添加频道的处理逻辑

6.3 删除频道

思路:

  • 如果未登录,则存储到本地

  • 如果已登录,则存储到线上

    • 找到数据接口

    • 封装请求方法

    • 请求调用

① 封装删除用户频道请求方法

 

② 修改删除频道的处理逻辑

7. 正确的获取首页频道列表数据

  • 加载用户频道数据
    • 登录,请求获取用户频道数据
    • 未登录,查看本地存储是否有用户频道数据,
      • 有直接使用
      • 没有获取默认的频道列表
  • 获取登录用户的频道列表和获取默认推荐的频道列表是同一个数据接口。后端会根据接口中的 token 来判定返回数据。

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

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

相关文章

K8S Docker搭建RocketMQ Dledger高可用集群

本篇文章回顾在华润基于K8S和Docker云设施搭建初步高可用具备failover的RocketMQ集群。RocketMQ版本是5.0.0。 目前现状 采用Dledger模式部署集群,3台namesrv,3台broker,namesrv每台1g的Docker部署,broker每台2g的Docker部署。测…

Hyper-V创建虚拟机安装OpenEulerOS

文章目录 下载OpenEulerHyper-V创建虚拟机 下载OpenEuler 进入官网下载,我选择的是 openEuler 24.03 LTS ,选择第一个版本即可: Hyper-V创建虚拟机 点击新建->虚拟机: 点击下一步: 输入虚拟机名称&#xff0c…

AMD Product Specifications - AMD 产品规格汇总

AMD Product Specifications - AMD 产品规格汇总 1. Desktop, Laptop and Workstation Processor Specifications (台式处理器、笔记本电脑处理器和工作站处理器规格)2. Server Processor Specifications (服务器处理器规格)3. Embedded Processor Specifications (嵌入式处理器…

element-ui表格1.0.0.1,表格的属性

前言:基于vue2element-ui的理论转实践的使用 第一组:数据显示 利用v-bind:data在table绑定数据源,将数据利用prop的属性传入到table-column,渲染到表格中 正片开始 首先,常用的属性(作者常用&#xff09…

书生大模型_InternLM + LlamaIndex RAG 实践

1.任务要求 基于 LlamaIndex 构建自己的 RAG 知识库,寻找一个问题 A 在使用 LlamaIndex 之前InternLM2-Chat-1.8B模型不会回答,借助 LlamaIndex 后 InternLM2-Chat-1.8B 模型具备回答 A 的能力,截图保存。 来源: https://github.…

鸿蒙媒体开发【媒体会话-提供方】音频和视频

媒体会话-提供方 介绍 本示例主要展示了媒体会话(媒体提供方)的相关功能,使用ohos.multimedia.avsession等接口实现媒体提供方与媒体播控中心自定义信息的交互功能。 注意: 此示例仅展示媒体提供方的相关功能,如果需…

2024 年华数杯全国大学生数学建模竞赛C 题 老外游中国 完整成品文章分享

最近,“city 不 city”这一网络流行语在外国网红的推动下备受关注。随着我国过境免签政策的落实,越来越多外国游客来到中国,通过网络平台展示他们在华旅行的见闻,这不仅推动了中国旅游业的发展,更是在国际舞台上展现了…

大模型学习笔记 - LLM 解码与部署

LLM 解码与部署 LLM 解码与部署 1. 解码策略 1.1 背景 1.1 贪心搜所1.2 概率采样 1.2 贪心搜所改进 1.2.1 束搜索 (保留前n个高概率的句子,最终选取整体概率高的生成)1.2.2 长度惩罚 (估计生成更长句子)1.2.3 重复惩罚…

stm32入门-----硬件I2C读写MPU6050

目录 前言 一、stm32中I2C库函数介绍(stm32f10x_i2c.h) 1.初始化 2.使能操作 3.生成起始位和结束位标志 4.发送I2C从机地址 5.发送数据和接收数据 6.发送应答位 7.状态检测 二、硬件I2C读取MPU6050 1.电路连线图 2.主要工程文件 3.MPU6050.…

WordPress网站被入侵,劫持收录事件分析

7.15,网站被入侵,但是直到7月17日,我才发现被入侵。 16日,17日正常更新文章,17日查询网站收录数据时,在站长资源平台【流量与关键词】查询上,我发现了比较奇怪的关键词。 乱码关键词排名 起初…

案例分享:如何使用原生的NodeJs下载视频网站上的视频资源到本地生成MP4文件

如何使用原生的NodeJs下载视频网站上的视频资源到本地生成MP4文件 1、当下视频网站的视频资源无法通过常规手段下载的原因2、什么是M3U8是什么视频文件?3、如何下载M3U8文件中的TS文件并在本地合并为MP4文件?3.1 FFmpeg 是什么工具?3.2 安装 FFmpeg 工具3.3 使用 FFmpeg 工具…

每天五分钟深度学习:向量化方式完成逻辑回归模型的参数更新

本文重点 上一节课程中,我们学习了m个样本的前向传播的向量化,我们可以同时完成m个样本的前向传播,也就是m个样本z的计算,然后a的计算。本节课程我们将学习dw和db参数更新的向量化,最终得到整个逻辑回归算法的参数更新的向量化表示。 非向量化的逻辑回归梯度下降算法 如…

学习日志8.4--DHCP攻击防范

目录 DHCP饿死攻击 DHCP Sever仿冒攻击 DHCP攻击防范 DHCP动态主机配置协议,是给主机提供自动获取IP地址等配置信息的服务。在主机对DHCP服务器发送DHCP Discover请求之后,服务器回复offer,主机再回复request,最后服务器回复AC…

uni-app开发打包成H5部署到服务器

1. 点击发行 2. 点击进入manifest.json的h5配置里,根据自己的情况配置一些信息。一定要注意配置 “运行的基础路径”,如果出现空白页面或者静态文件404的情况,可能是因为这个路径没有配置好。 3. 填写域名 4. 点击发行后,控制台后…

如何让左右两个div各占50%,并且高度相同?

如何设置两个div各占一半,并且高度随着内容增加,而且两边div的高度一致呢?默认会发现高度不一致,改用flex就可以了,另外发现传统的table也可以轻易实现。不知道不用flex的话是否可以实现。 方法1(div实现&a…

二分+dp,CF 1993D - Med-imize

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 D - Med-imize 二、解题报告 1、思路分析 对于n < k的情况直接排序就行 对于n > k的情况 最终的序列长度一定是 (n - 1) % k 1 这个序列是原数组的一个子序列 对于该序列的第一个元素&#xff0…

Spring中使用Async进行异步功能开发实战-以大文件上传为例

目录 前言 一、场景再现 1、Event的同步机制 二、性能优化 1、异步支持配置 2、自定义处理线程池扩展 3、将线程池配置类绑定到异步方法 三、总结 前言 在之前的博客中&#xff0c;曾将讲了在SpringBoot中如何使用Event来进行大文件上传的解耦&#xff0c;原文地址&…

算法回忆录(2)

6.输入一个非递减排列的整数数组nums,和一个目标值target。请找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值target,则输出0&#xff0c;0。请设计一个时间复杂度为0(log n)的算法解决此问题。 输入包括两行&#xff0c;第一行输入两个整数&#xff0c…

【电路笔记】-偏置晶体管

偏置晶体管 文章目录 偏置晶体管1、概述2、共发射极晶体管偏置3、集极反馈偏置4、双反馈晶体管偏置5、发射极反馈配置6、分压器晶体管偏置晶体管偏置是将晶体管直流工作电压或电流条件设置为正确电平的过程,以便晶体管可以正确放大任何交流输入信号 1、概述 双极晶体管的稳态…

DBA | 炼气期,关系数据库及六大范式(NF)理论概述!

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 前言简述 描述&#xff1a;上一章&#xff0c;我们简单了解了关系类型数据库&#xff0c;以及其相关产品&#xff0c;此章节我们由浅入深的学习一下什么是关系型数据库&#xff0c;不过在讲解关系…