news 2026/6/15 14:35:40

提醒列表模块 Cordova 与 OpenHarmony 混合开发实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
提醒列表模块 Cordova 与 OpenHarmony 混合开发实战

📌 概述

提醒列表模块展示了所有已创建的提醒。该模块集成了 Cordova 框架与 OpenHarmony 原生能力,提供了完整的提醒管理功能。用户可以查看所有提醒、启用或禁用提醒、编辑提醒和删除提醒。模块支持提醒的分类显示和搜索。

🔗 完整流程

第一步:提醒数据加载

当用户进入提醒列表页面时,应用会从数据库中加载所有提醒。应用会按提醒类型或状态进行分类显示。

第二步:提醒展示与交互

数据加载完成后,应用会将提醒显示为列表形式。每个提醒显示提醒名称、时间和状态。用户可以点击提醒进行编辑或删除。

第三步:提醒状态管理

用户可以启用或禁用提醒。应用会实时更新提醒的状态。当提醒被触发时,应用会通过原生通知系统发送提醒。

🔧 Web 代码实现

HTML 提醒列表

<divid="reminder-list-page"class="page"><divclass="page-header"><h1>提醒列表</h1><buttonclass="btn btn-primary"onclick="navigateTo('create-reminder')">+ 创建提醒</button></div><divclass="reminder-toolbar"><inputtype="text"id="reminder-search"class="search-box"placeholder="搜索提醒..."><selectid="reminder-filter"onchange="filterReminders()"><optionvalue="">全部</option><optionvalue="enabled">已启用</option><optionvalue="disabled">已禁用</option></select></div><divid="reminders-list"class="reminders-list"><!-- 提醒项动态生成 --></div></div>

提醒列表页面包含搜索和筛选功能。

提醒列表逻辑

letallReminders=[];asyncfunctionrenderReminderList(){try{allReminders=awaitdb.getReminders();constlistContainer=document.getElementById('reminders-list');listContainer.innerHTML='';if(allReminders.length===0){listContainer.innerHTML='<div class="no-data"><p>暂无提醒</p></div>';return;}allReminders.forEach(reminder=>{constreminderEl=createReminderElement(reminder);listContainer.appendChild(reminderEl);});// 绑定搜索事件document.getElementById('reminder-search').addEventListener('input',function(e){constkeyword=e.target.value.toLowerCase();constfiltered=allReminders.filter(r=>r.name.toLowerCase().includes(keyword));renderReminderItems(filtered);});}catch(error){console.error('Failed to render reminders:',error);showToast('加载提醒失败','error');}}functioncreateReminderElement(reminder){constdiv=document.createElement('div');div.className='reminder-item';div.dataset.reminderId=reminder.id;consttime=newDate(reminder.time).toLocaleTimeString('zh-CN');conststatusClass=reminder.enabled?'enabled':'disabled';conststatusText=reminder.enabled?'已启用':'已禁用';div.innerHTML=`<div class="reminder-info"> <div class="reminder-name">${reminder.name}</div> <div class="reminder-time">${time}</div> <div class="reminder-status${statusClass}">${statusText}</div> </div> <div class="reminder-actions"> <button class="btn-icon" onclick="toggleReminder(${reminder.id})" title="切换">🔔</button> <button class="btn-icon" onclick="editReminder(${reminder.id})" title="编辑">✏️</button> <button class="btn-icon" onclick="deleteReminder(${reminder.id})" title="删除">🗑️</button> </div>`;returndiv;}functionrenderReminderItems(reminders){constlistContainer=document.getElementById('reminders-list');listContainer.innerHTML='';if(reminders.length===0){listContainer.innerHTML='<div class="no-data"><p>暂无提醒</p></div>';return;}reminders.forEach(reminder=>{constreminderEl=createReminderElement(reminder);listContainer.appendChild(reminderEl);});}asyncfunctiontoggleReminder(reminderId){try{constreminder=awaitdb.getReminder(reminderId);awaitdb.updateReminder(reminderId,{enabled:!reminder.enabled});if(window.cordova){cordova.exec(null,null,'TeaLogger','logEvent',['reminder_toggled',{reminderId:reminderId,enabled:!reminder.enabled}]);}showToast('提醒已更新','success');renderReminderList();}catch(error){console.error('Failed to toggle reminder:',error);showToast('更新失败','error');}}asyncfunctiondeleteReminder(reminderId){if(!confirm('确定要删除这个提醒吗?')){return;}try{awaitdb.deleteReminder(reminderId);if(window.cordova){cordova.exec(null,null,'TeaLogger','logEvent',['reminder_deleted',{reminderId:reminderId}]);}showToast('提醒已删除','success');renderReminderList();}catch(error){console.error('Failed to delete reminder:',error);showToast('删除失败','error');}}functionfilterReminders(){constfilter=document.getElementById('reminder-filter').value;constfiltered=filter===''?allReminders:filter==='enabled'?allReminders.filter(r=>r.enabled):allReminders.filter(r=>!r.enabled);renderReminderItems(filtered);}

这段代码实现了提醒列表功能。renderReminderList()加载并渲染提醒列表。createReminderElement()创建提醒项。toggleReminder()启用或禁用提醒。deleteReminder()删除提醒。

🔌 OpenHarmony 原生代码

提醒通知管理

// entry/src/main/ets/plugins/ReminderNotification.etsimport{notificationManager}from'@kit.NotificationKit';exportclassReminderNotification{staticsendNotification(reminder:Reminder):void{constrequest:notificationManager.NotificationRequest={id:reminder.id,content:{contentType:notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,normal:{title:reminder.name,text:`该喝茶了!`,additionalText:newDate().toLocaleTimeString('zh-CN')}}};notificationManager.publish(request,(err)=>{if(err){hilog.error(0xFF00,'ReminderNotification',`Failed to send notification:${err}`);}else{hilog.info(0xFF00,'ReminderNotification',`Notification sent for reminder:${reminder.name}`);}});}staticcancelNotification(reminderId:number):void{notificationManager.cancel(reminderId,(err)=>{if(err){hilog.error(0xFF00,'ReminderNotification',`Failed to cancel notification:${err}`);}});}}interfaceReminder{id:number;name:string;time:string;enabled:boolean;}

这个类管理提醒通知。sendNotification()发送提醒通知。cancelNotification()取消提醒通知。

📝 总结

提醒列表模块展示了如何在 Cordova 框架中实现提醒管理功能。通过 Web 层的用户界面和交互,结合原生层的通知管理,为用户提供了完整的提醒管理体验。

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

14、WINS服务器与GlobalNames区域部署全解析

WINS服务器与GlobalNames区域部署全解析 1. WINS服务器基础配置 1.1 自动配置复制伙伴 WINS服务器可以自动将其他WINS服务器配置为复制伙伴。它通过定期多播来宣告自己的存在,多播消息以IGMP消息的形式发送到组播地址224.0.1.24(这是为WINS服务器使用保留的知名多播IP地址…

作者头像 李华
网站建设 2026/6/11 3:02:11

SpringBoot+Vue 太原学院商铺管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

摘要 随着电子商务的快速发展&#xff0c;商铺管理系统在高校商业环境中扮演着越来越重要的角色。太原学院作为一所综合性院校&#xff0c;校内商铺数量较多&#xff0c;传统的手工管理方式效率低下&#xff0c;难以满足现代化管理的需求。商铺管理系统能够有效整合商铺信息、订…

作者头像 李华
网站建设 2026/6/14 17:59:21

29、分布式文件系统与共享文件夹影子副本全解析

分布式文件系统与共享文件夹影子副本全解析 1. 分布式文件系统概述 在分布式文件系统中,客户端并非每小时都检查命名空间更新,而是每小时轮询最近的域控制器来发现命名空间的更新。除了轮询,还可以配置引用。引用是客户端计算机在用户访问具有目标的命名空间根或文件夹时,…

作者头像 李华
网站建设 2026/6/15 6:33:20

LangFlow能否替代代码开发?专家深度点评其局限与优势

LangFlow能否替代代码开发&#xff1f;专家深度点评其局限与优势 在AI应用开发的浪潮中&#xff0c;一个看似简单的问题正引发越来越多讨论&#xff1a;我们是否还需要写代码来构建智能系统&#xff1f;随着LangChain等框架让大模型集成变得可行&#xff0c;另一类工具——如La…

作者头像 李华
网站建设 2026/6/14 23:54:00

LangFlow与Docker Compose整合:一键启动完整AI环境

LangFlow与Docker Compose整合&#xff1a;一键启动完整AI环境 在大模型浪潮席卷各行各业的今天&#xff0c;越来越多开发者希望快速构建基于大语言模型&#xff08;LLM&#xff09;的应用。然而现实往往令人却步&#xff1a;LangChain 的复杂 API、多服务依赖的配置难题、环境…

作者头像 李华
网站建设 2026/6/12 9:28:40

scanner在汽车焊装线的质量追溯应用:完整示例

扫码器如何成为焊装线的“质量侦探”&#xff1f;一个真实案例讲透工业追溯在汽车工厂里&#xff0c;每天有成百上千台车身骨架沿着焊装主线缓缓前行。机械臂挥舞间火花四溅&#xff0c;数百个焊点在一分钟内精准完成。但你有没有想过&#xff1a;如果半年后某辆车出现异响&…

作者头像 李华