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

目录

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.rhkb.cn/news/391910.html

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

相关文章

基于RK3588+AI支持能源在线监测系统应用的AIOT产品方案

支持能源在线监测系统应用的AIOT产品方案 近年来,智慧能源行业受益于国家政策扶持、市场需求拉动和先进技术支撑呈现出了蓬勃发展态势。助推智慧能源发展,打造了支持能源在线监测系统应用的AIOT产品方案。 能源在线监测系统的市场潜力 随着社会经济的飞…

Python | Leetcode Python题解之第319题灯泡开关

题目: 题解: class Solution:def bulbSwitch(self, n: int) -> int:return int(sqrt(n 0.5))

C++商店管理系统

代码中使用了C11的特性 后面有些输出(cout输出的)的提示文本是英文,因为懒得敲中文 源码在最后面 文末投票参与一下谢谢 商品数据保存在 items.txt 用户数据保存在 users.txt 实现功能 1.添加商品(商品ID,商品名,库存数量,价格&a…

分享一个基于人脸识别的小区物业管理系统Spring Boot(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…

Liunx 小程序之进度条

Liunx 小程序之进度条 效果前提条件回车和换行缓冲区倒计时 进度条纯进度条模拟下载的进度条Progressbar.hProgressbar.cmain.cmakefile 效果 先来看效果,这其实是一个动态的进度条,后有源码,运行即可: 前提条件 在制作之前有两…

数论基础知识(上)

目录 数学符号 整除与约数 最大公约数(gcd)和最小公倍数(lcm) 质数 (素数) 算术基本定理(唯一分解定理) 约数个数 约数之和 分解质因数(枚举法) 试除法求约数(枚举法) 数学…

RTSP系列四:RTSP Server/Client实战项目

RTSP系列: RTSP系列一:RTSP协议介绍-CSDN博客 RTSP系列二:RTSP协议鉴权-CSDN博客 RTSP系列三:RTP协议介绍-CSDN博客 RTSP系列四:RTSP Server/Client实战项目-CSDN博客 目录 一、RTSP Server实战项目 1、准备 2、…

F4Pan网盘解析获取下载链接的工具系统源码

F4Pan网盘解析获取下载链接的工具系统源码,F4Pan(下称本项目)使用的接口全部来自于官方,无任何破坏接口的行为,本项目所有代码全部开源,仅供学习参考使用,请遵守相关的法律法规,禁止商用,若无视…

java+springboot+mysql校园二手书销售平台设计与实现00895-计算机毕业设计项目选题推荐(附源码)

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对校园二手书销售平台等问题,对校…

快速体验LLaMA-Factory 私有化部署和高效微调Llama3模型FAQ

序言 之前已经介绍了在超算互联网平台SCNet上使用异构加速卡AI 显存64GB PCIE,私有化部署Llama3模型,并对 Llama3-8B-Instruct 模型进行 LoRA 微调、推理和合并 ,详细内容请参考另一篇博客:快速体验LLaMA-Factory 私有化部署和高…

计算机网络基础 - 计算机网络和因特网(2)

计算机网络基础 计算机网络和因特网Internet 结构和 ISP分组延时、丢失和吞吐量四种分组延时分组丢失吞吐量 协议层次及其服务模型概念数据单元(DU)协议栈TCP/IP 协议各层次的协议数据单元IOS/OSI 参考模型 计算机网络和因特网的历史早期计算机网路&…

自动驾驶的六个级别是什么?

自动驾驶汽车和先进的驾驶辅助系统(ADAS)预计将帮助拯救全球数百万人的生命,消除拥堵,减少排放,并使我们能够在人而不是汽车周围重建城市。 自动驾驶的世界并不只由一个维度组成。从没有任何自动化到完整的自主体验&a…

偷懒神器:auto 的讲解

1. auto 的定义 在c/c11之前,auto用来修饰局部变量,表明该变量是一个自动变量,函数结束后该变量销毁   c11中,赋予auto全新的含义。其中表示:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来…

熊海1.0cmsPHP代码审计

熊海1.0cmsPHP代码审计 环境搭建 下载之后直接使用phpstduy搭建就好了 工具使用 比如使用seay审计系统 sql大多数是存在的,但是没有文件上传,这个就是需要自己去验证 漏洞审计 SQL注入 有点多,随便拿一个举例子 就比如我们的登录页面…

Ceres Cuda加速

文章目录 一、简介二、准备工作三、实现代码四、实现效果参考资料一、简介 字Ceres2.2.1版本之后,作者针对于稠密矩阵的分解计算等操作进行了Cuda加速,因此这里就基于此项改动测试一下效果。 二、准备工作 1、首先是需要安装Cuda这个英伟达第三方库,https://developer.nvidi…

日企的“目标式招聘”到底什么意思?

看到篇文章称:日企的目标式招聘,高效率招聘。这是什么意思呢?小编今天来跟大家讲一讲。 首先,日企的目标式招聘,其实企业也是迫不得已。一个大型企业的招聘负责人说:“以前我们都是认真地考察每一位应聘者&…

Vue 使用elementUI-plus el-calendar加 公历转农历 是否节假日 等

效果图: 1. 使用到自定文件 calendar.js /*** 1900-2100区间内的公历、农历互转* charset UTF-8* Author Jea杨(JJonlineJJonline.Cn)* Time 2014-7-21* Time 2016-8-13 Fixed 2033hex、Attribution Annals* Time 2016-9-25 Fixed lunar LeapMonth Param…

浏览器事件循环详解

1. 浏览器的进程模型 1.1. 何为进程? 程序运行需要有它自己的专属内存空间,可以把这块内存空间简单的理解为进程。 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 1.2. 何为线程&#xff1f…

NodeJS的安装【windows】

文章目录 1 安装包下载2 下载过程3 测试 1 安装包下载 Node.js中文网:https://nodejs.cn 2 下载过程 3 测试

【游戏引擎之路】登神长阶(八)——Python之旅行,休息一下,去看看新世界

5月20日-6月4日:攻克2D物理引擎。 6月4日-6月13日:攻克《3D数学基础》。 6月13日-6月20日:攻克《3D图形教程》。 6月21日-6月22日:攻克《Raycasting游戏教程》。 6月23日-7月1日:攻克《Windows游戏编程大师技巧》。 7月…