news 2026/7/3 1:36:41

【OpenHarmony/HarmonyOs 】每日政治资讯页面:搜索、分类、收藏与详情弹层实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【OpenHarmony/HarmonyOs 】每日政治资讯页面:搜索、分类、收藏与详情弹层实现

【OpenHarmony/HarmonyOs 】每日政治资讯页面:搜索、分类、收藏与详情弹层实现

政治学习离不开时政素材。为了让用户每天都能接触一点政治知识,政治视界中设计了“每日政治”页面。它不是简单文章列表,而是包含日期、分类、搜索、收藏、今日推荐和详情弹层的内容模块。本文详细拆解实现过程 📰

一、页面目标

每日政治页面要解决:

  • 展示当天时政内容;
  • 支持分类筛选:政治、经济、文化、哲学;
  • 支持关键词搜索;
  • 支持收藏;
  • 点击卡片打开详情;
  • 根据日期显示“今天/昨天/几天前”。

这类页面适合作为学习 App 的内容输入入口,帮助学生把教材知识和现实热点联系起来。

二、数据模型

每日政治数据模型如下:

export interface DailyPoliticsItem {id:number; title:string; subtitle:string; content:string; imageName:string; category:string; grade:string;date:string; tags:string[]; isFavorite:boolean; readCount:number; }

字段比较完整:标题、副标题、正文、图片、分类、标签、收藏、阅读数都包含了。

三、页面状态设计

DailyPoliticsPage中维护了列表、筛选、搜索和详情弹层状态:

@StatepoliticsList: DailyPoliticsItem[] = sampleDailyPolitics;@StateselectedCategory: string ='全部';@StatecurrentDate: string ='';@StateselectedItem: DailyPoliticsItem | null = null;@StateshowDetail: boolean = false;@StatefavoriteItems: number[] = [];@StatesearchKeyword: string ='';@StatetodayItem: DailyPoliticsItem | null = null;

selectedItem用于详情弹层,favoriteItems用于保存收藏 ID,todayItem用于展示今日推荐。

四、初始化日期

页面出现时生成当前日期:

aboutToAppear():void{constnow =newDate();constyear= now.getFullYear();constmonth= now.getMonth() +1;constday= now.getDate();this.currentMonth=year+'年'+month+'月';this.currentDate=year+'-'+ (month<10?'0':'') +month+'-'+ (day<10?'0':'') +day;this.todayItem=this.getTodayItem(); }

这种写法可以让页面标题显示当前月份,并尝试匹配当天内容。

五、搜索与分类过滤

核心过滤逻辑如下:

getFilteredList():DailyPoliticsItem[] {letfiltered =this.politicsList;if(this.selectedCategory!=='全部') { filtered = filtered.filter((item: DailyPoliticsItem) =>item.category===this.selectedCategory); }if(this.searchKeyword.length>0) {constkw =this.searchKeyword.toLowerCase(); filtered = filtered.filter((item: DailyPoliticsItem) =>item.title.toLowerCase().includes(kw) || item.subtitle.toLowerCase().includes(kw) || item.content.toLowerCase().includes(kw) || item.tags.some((tag:string) =>tag.toLowerCase().includes(kw)) ); }returnfiltered; }

搜索覆盖标题、副标题、正文和标签,能满足内容检索需求。

六、今日内容匹配

getTodayItem(): DailyPoliticsItem |null{consttodayStr =this.currentDate;for(let i =0; i <this.politicsList.length; i++) {if(this.politicsList[i].date === todayStr) {returnthis.politicsList[i]; } }returnthis.politicsList.length >0?this.politicsList[0] :null; }

如果没有当天内容,就回退到第一条。这样页面不会空掉。

七、收藏实现

收藏逻辑使用数组记录 ID:

toggleFavorite(itemId:number):void{constidx =this.favoriteItems.indexOf(itemId);if(idx >=0) {this.favoriteItems=this.favoriteItems.filter((id:number) =>id !== itemId); }else{constnewFavorites:number[] =this.favoriteItems.slice(); newFavorites.push(itemId);this.favoriteItems= newFavorites; } }

注意这里没有直接修改原数组,而是创建新数组再赋值。这有利于 ArkUI 识别状态变化。

八、详情弹层

点击文章卡片后:

openDetail(item: DailyPoliticsItem):void{ this.selectedItem = item; this.showDetail =true;setTimeout(()=>{ this.detailAnimVisible =true; },10); } closeDetail():void{ animateTo({ duration:200, curve: Curve.EaseIn },()=>{ this.detailAnimVisible =false; });setTimeout(()=>{ this.showDetail =false; this.selectedItem =null; },200); }

这里通过showDetail控制弹层是否存在,通过detailAnimVisible控制动画状态。关闭时先播放动画,再清空数据。

九、实现流程总结

定义 DailyPoliticsItem ↓ 准备时政数据和图片资源 ↓ 页面初始化当前日期 ↓ 匹配今日内容 ↓ 分类与关键词过滤 ↓ 点击卡片打开详情弹层 ↓ 收藏状态写入 favoriteItems

十、结语

每日政治页面让学习 App 不再只是做题,而是把现实材料引入学习过程。通过搜索、分类、收藏和详情弹层,用户可以像阅读轻量资讯一样接触政治知识。

后续可以继续扩展:阅读记录持久化、收藏同步到首页、根据教材知识点推荐时政材料。这样每日政治就能成为连接教材与现实的桥梁 🌉

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 1:35:59

第1章. 故事的缘起

幼师在黑板上写一个式子 “1 1 ”&#xff0c;由小明同学来填空。 由于已经学习了10以内的加法&#xff0c;小明同学可以完全靠自己来计算这个题目&#xff0c;模拟该过程的代码如下&#xff1a; 1 public class Student2 {3 private String name null;4 5 public …

作者头像 李华
网站建设 2026/7/3 1:35:18

react路由懒加载、history 模式刷新404 解决方案

这是 React 面试中出现频率最高 的问题之一&#xff0c;也是企业项目部署时必须解决的问题。我会从 懒加载原理 → 配置 → history刷新404 → 不同服务器解决方案 → 面试回答 全面讲解。一、React 路由懒加载&#xff08;Lazy Load&#xff09;React 默认所有页面都会打包到一…

作者头像 李华
网站建设 2026/7/3 1:29:11

00668,湘江新区的“尖子生”交卷了!

湖南又有一家巨头登上世界级资本舞台。7月2日&#xff0c;全球消费电子领军企业安克创新&#xff08;Anker&#xff09;正式在香港联交所主板挂牌上市&#xff0c;成为湖南第五家“AH”上市企业。图源&#xff1a;湖南日报在过去的15年里&#xff0c;安克创新完成了从单一充电单…

作者头像 李华
网站建设 2026/7/3 1:26:00

AI编程助手Agent Skills开发指南与实践

1. 理解Agent Skills的核心概念在AI辅助编程领域&#xff0c;Agent Skills代表着一套结构化的工作流程和最佳实践集合。它们不是简单的代码片段或模板&#xff0c;而是将资深工程师的经验编码化&#xff0c;让AI代理能够遵循一致的开发方法论。就像一位经验丰富的导师&#xff…

作者头像 李华
网站建设 2026/7/3 1:23:02

密码学博客:AES-ECB模式致命缺陷、攻击原理、实战与全面防御

一、前言AES 是目前全球通用的安全对称加密算法&#xff0c;但算法安全 ≠ 加密模式安全。很多开发者误用最简单的 ECB&#xff08;电子密码本&#xff0c;Electronic CodeBook&#xff09; 模式&#xff0c;导致整套 AES 加密体系彻底失效&#xff0c;出现严重明文泄露、数据篡…

作者头像 李华