除了基本的事件绑定,鸿蒙的ArkUI
鸿蒙操作系统(HarmonyOS)是由华为技术有限公司开发的分布式操作系统,旨在为多种智能设备提供一个统一的操作平台。它不仅适用于智能手机,还适用于平板电脑、智能手表、智能电视等物联网设备。为了使开发者能够更加便捷地创建跨设备的应用程序,鸿蒙引入了ArkUI框架,这是一个基于声明式编程范式的用户界面构建工具集。
在鸿蒙应用开发中,组件事件是用户与应用程序交互的核心机制之一。组件事件允许开发者响应用户的操作,比如点击按钮、滚动列表或输入文本。通过定义和处理这些事件,可以实现动态且互动性强的用户界面。本文将深入探讨鸿蒙系统下的ArkUI组件事件,并给出具体的代码示例来说明如何在实际项目中使用它们。
事件绑定
在鸿蒙的ArkUI中,事件绑定可以通过`@event`语法糖直接在模板内完成。这种方式简化了事件处理器的连接过程,使得代码更易读写。下面是一个简单的例子,展示了如何为一个按钮添加点击事件:
```xml
点击我
```
这里,当用户点击这个按钮时,就会触发`handleClick`函数。接下来我们来看一下`handleClick`函数的JavaScript实现:
```javascript
// JavaScript code for handling the click event
export default {
data() {
return {
message: '这是初始消息'
}
},
methods: {
handleClick() {
console.log('按钮被点击');
this.message = '按钮已经被点击';
}
}
}
```
上述代码片段中,`handleClick`方法会改变组件内的`message`数据属性值,从而更新界面上显示的消息内容。
组件间通信
除了基本的事件绑定,鸿蒙的ArkUI还支持父组件向子组件传递事件处理器。这有助于构建复杂的用户界面,其中多个组件需要协同工作。例如,考虑一个场景:父组件包含一个子组件,该子组件负责收集用户输入的数据,并在提交时通知父组件。
父组件
```xml
```
子组件
```xml
提交
```
在这个例子中,`ChildComponent`在其表单提交时发射了一个名为`submit`的自定义事件,而父组件监听到了这个事件并调用了`handleSubmit`方法来处理来自子组件的数据。
触摸事件
触摸事件对于移动设备来说尤为重要,因为它们提供了丰富的用户交互方式。鸿蒙的ArkUI提供了对触摸事件的支持,包括但不限于`touchstart`、`touchmove`、`touchend`等。以下是如何在鸿蒙应用中处理触摸事件的一个实例:
```xml
@touchmove="onTouchMove"
@touchend="onTouchEnd">
触摸我
```
对应的JavaScript逻辑如下:
```javascript
export default {
methods: {
onTouchStart(event) {
console.log('开始触摸:', event.touches[0]);
},
onTouchMove(event) {
console.log('正在移动:', event.touches[0]);
},
onTouchEnd(event) {
console.log('结束触摸:', event.changedTouches[0]);
}
}
}
```
以上代码段中,`event.touches`和`event.changedTouches`分别包含了当前接触点的信息以及最后一次改变状态的接触点信息。这些属性可以帮助开发者了解用户的触摸行为,并据此做出相应的反应。
自定义事件
除了内置的标准事件外,鸿蒙的ArkUI还允许开发者创建自己的事件类型,这对于实现特定功能非常有用。自定义事件可以通过`this.$emit`方法从子组件发出,并由父组件捕获。如前所述,在子组件中,我们可以利用`$emit`来发送任意命名的事件;而在父组件中,则需要注册相应的事件监听器来接收这些自定义事件。
键盘事件
键盘事件通常用于处理用户通过键盘进行的输入。鸿蒙的ArkUI同样支持键盘事件的监听,如`keydown`、`keyup`等。下面是一段示例代码,演示了如何监听键盘按键:
```xml
```
```javascript
export default {
methods: {
onKeyDown(event) {
if (event.key === 'Enter') {
console.log('按下回车键');
}
}
}
}
```
这段代码实现了对输入框中按下了回车键(Enter)的响应。
拖放事件
拖放是一种直观的交互模式,广泛应用于文件管理、布局调整等场景。鸿蒙的ArkUI也支持拖放事件,如`dragstart`、`dragover`、`drop`等。下面的例子展示了如何设置一个可拖动元素和一个接受拖放的目标区域:
```xml
拖拽我
放置区
```
```javascript
export default {
data() {
return {
dragItem: null
}
},
methods: {
onDragStart(event) {
this.dragItem = event.target;
event.dataTransfer.setData('text/plain', '拖拽项');
},
onDrop(event) {
event.preventDefault();
if (this.dragItem) {
this.dragItem.style.display = 'none';
console.log('已放下:', event.dataTransfer.getData('text'));
}
}
}
}
```
此代码片段中,`draggable`属性使得元素可以被拖动,同时设置了`dragstart`和`drop`事件处理器来处理拖动开始和结束的行为。
相关文章:
除了基本的事件绑定,鸿蒙的ArkUI
鸿蒙操作系统(HarmonyOS)是由华为技术有限公司开发的分布式操作系统,旨在为多种智能设备提供一个统一的操作平台。它不仅适用于智能手机,还适用于平板电脑、智能手表、智能电视等物联网设备。为了使开发者能够更加便捷地创建跨设备…...
数据分析及应用:经营分析中的综合指标解析与应用
目录 1. 市场份额(Market Share) 2. 客户获取成本(Customer Acquisition Cost, CAC) 3. 客户生命周期价值(Customer Lifetime Value, CLV) 4. 客户留存率(Customer Retention Rate, CRR) 5. 净推荐值(Net Promoter Score, NPS) 6. 转化率(Conversion Rate) …...
Mac开启任何来源安装配置环境变量
目录 开启任何来源配置环境变量退出保存时如果没有权限修改文件权限拓展——.bash_profile和.zshrc 开启任何来源 sudo spctl --master-disable#打开软件时提示文件损坏 sudo xattr -r -d com.apple.quarantine 进入访达应用程序拖拽应用到终端配置环境变量 cd ~ vi ~/.bash…...
UI自动化设计模式--POM
在自动化测试中,Page Object Model(POM)设计方式是一种常用的设计模式,它将页面元素和操作封装成独立的类,提高了测试代码的可读性、可维护性和可复用性。以下是关于POM设计方式的详细介绍: 基本概念 POM…...
(三)线性代数之二阶和三阶行列式详解
在前端开发中,尤其是在WebGL、图形渲染、或是与地图、模型计算相关的应用场景里,行列式的概念常常在计算变换矩阵、进行坐标变换或进行图形学算法时被使用。理解二阶和三阶行列式对于理解矩阵运算、旋转、平移等操作至关重要。下面,我将结合具…...
postman接口测试工具详解
一、前言 Postman是一款广泛使用的API测试工具,适用于开发人员和测试人员。它提供了直观的用户界面,能够方便地进行API请求、响应验证、自动化测试等操作。本文将详细介绍Postman的功能和用法,帮助用户高效地进行API测试。 二、Postman的主…...
Golang 中强大的重试机制,解决瞬态错误
文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…...
【C语言系列】深入理解指针(2)
一、数组名的理解 上一篇文章中我们写过一个这样的代码: int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0];这里使用&arr[0] 的方式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,而且是数组首元素的地址ÿ…...
【网络原理】万字详解 HTTP 协议
🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. HTTP 前置知识1.1 HTTP 是什么1.2 HTPP 协议应用场景1.3 HTTP 协议工作过程 2. HTTP 协议格式2.1 fiddler…...
WIFI连接与通信
ESP32-S3 支持 2.4 GHz 的 Wi-Fi 4(802.11n)标准,提供高达 150 Mbps 的数据传输速率。它支持 STA(Station)模式、AP(Access Point)模式和 Wi-Fi 直连(Wi-Fi Direct)模式&…...
Elixir语言的数据库编程
Elixir语言的数据库编程 介绍 Elixir是一种基于Erlang虚拟机(BEAM)的函数式编程语言,特别适用于构建可扩展和可维护的系统。它结合了Erlang的卓越并发特性和Ruby的易用性,因此在Web开发和实时应用中越来越受到欢迎。伴随着Elixi…...
python中Mako用法
Mako 是一个轻量级的 Python 模板库,它以其高效的代码生成和灵活的表达能力著称,常用于 Web 开发和静态文件生成。以下是对 Mako 的核心 API介绍。 1. 安装 Mako 首先安装 Mako: pip install mako2. 基本用法 Mako 的核心在于 Template 类…...
SMS4J - 一个聚合各种短信API商的工具
众所周知,在我们日常的项目开发中,短信验证码发送是一个必不可少的环节。 特别是如今手机互联网时代,基本所有东西都跟手机强绑定,所有的安全验证都离不开验证码这一环节。 所以对于一个系统来说,发送短信验证码成为…...
BEVFusion论文阅读
1. 简介 融合激光雷达和相机的信息已经变成了3D目标检测的一个标准,当前的方法依赖于激光雷达传感器的点云作为查询,以利用图像空间的特征。然而,人们发现,这种基本假设使得当前的融合框架无法在发生 LiDAR 故障时做出任何预测&a…...
【总结盘点类】2024,一场关于海量数据治理以及合理建模的系列写作
目录 1.今年的创作路线 2.先说第一条线 2.1.由日志引出的海量文本数据存储和分析问题 2.2.监控以及监控的可视化 2.3.数据量级再往上走牵扯出了大数据 2.4.由大数据牵扯出的JAVA线程高级内容 3.第二条线,也是2025要继续的主线 1.今年的创作路线 今年的写作内…...
【25考研】考清华的软件工程专业的研究生需要准备什么?
清华软件复试竞争一样很激烈!建议同学认真复习! 关于项目的注意事项先来一些总结: 千万别照抄开源项目 开源项目是一个很好的参考,但直接搬过来就没啥意义啦。我们可以根据开源项目学习它的技术架构和关键点,然后结…...
网络编程-UDP套接字
文章目录 UDP/TCP协议简介两种协议的联系与区别Socket是什么 UDP的SocketAPIDatagramSocketDatagramPacket 使用UDP模拟通信服务器端客户端测试 完整测试代码 UDP/TCP协议简介 两种协议的联系与区别 TCP和UDP其实是传输层的两个协议的内容, 差别非常大, 对于我们的Java来说, …...
EXCEL的一些用法记录
按某个分隔符进行拆分多列 【数据】- 【分列】 多列调整成多行 复制 - 粘贴 - 选择【转置】 部分内容替换 SUBSTITUTE()函数 ,固定内容 加“”...
不使用 JS 纯 CSS 获取屏幕宽高
前言 在现代前端开发中,获取屏幕的宽度和高度通常依赖于 JavaScript。然而现代 CSS 也可以获取到屏幕的宽高,通过自定义属性(CSS Variables)和一些数学函数来实现这一目标。本文将详细解析如何使用 CSS 的 property 规则和一些数…...
Node.js 完全教程:从入门到精通
Node.js 完全教程:从入门到精通 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,允许开发者在服务器端使用 JavaScript。它的非阻塞 I/O 和事件驱动架构使得 Node.js 非常适合于构建高性能的网络应用。本文将详细介绍 Node.js 的安装、基本语…...
可替代CentOS 7的Linux操作系统选型
可替代CentOS 7的其他Linux操作系统选型 一、背景介绍二、主流操作系统调研2.1 企业级产品:Red Hat Enterprise Linux/CentOS Stream2.1.1 Red Hat Enterprise Linux2.1.2 CentOS Stream2.2 其他发行版:Debian/Ubuntu2.3 开源产品:AlmaLinux / RockyLinux2.3.1 AlmaLinux2.3…...
【ESP32】ESP32连接JY61P并通过WIFI发送给电脑
前言 手头上有个ESP32,发现有wifi功能,希望连接JY61P并通过WIFI把姿态数据发送给电脑 1.采用Arduino IDE编译器;需要安装ESP32的开发板管理器; 2.电脑接受数据是基于python的; 1. ESP32 连接手机WIFI #include <…...
【JSqlParser】Java使用JSqlParser解析SQL语句总结
简述 Java解析SQL语句有很多工具都可以做到,比如Mybatis、Druid、目前用来用去最全面的仍然是Jsqlparser,它是一个Github上的开源项目,JSqlParser是一个用于解析SQL语句的Java库,它可以帮助开发者分析和操作SQL语句的结构。无论是…...
TCP断开通信前的四次挥手(为啥不是三次?)
1.四次握手的过程 客户端A发送 FIN(终止连接请求) A:我要断开连接了(FIN)。A进入FIN_WAIT_1状态,表示请求断开,等待对方确认。 服务器B回复 ACK(确认断开请求,但还未准备…...
解决用 rm 报bash: /usr/bin/rm: Argument list too long错
但目录里面文件过多用 rm 报bash: /usr/bin/rm: Argument list too long错时怎么办: 看看以下操作记录 rootmcu:/# cd /tmp rootmcu:/tmp# rm -f /tmp/chunk* bash: /usr/bin/rm: Argument list too long rootmcu:/tmp# rm -rf /tmp/chunk* bash: /usr/bin/rm: Arg…...
AI News(1/21/2025):OpenAI 安全疏忽:ChatGPT漏洞引发DDoS风险/OpenAI 代理工具即将发布
1、OpenAI 的安全疏忽:ChatGPT API 漏洞引发DDoS风险 德国安全研究员 Benjamin Flesch 发现了一个严重的安全漏洞:攻击者可以通过向 ChatGPT API 发送一个 HTTP 请求,利用 ChatGPT 的爬虫对目标网站发起 DDoS 攻击。该漏洞源于 OpenAI 在处理…...
从零到上线:Node.js 项目的完整部署流程(包含 Docker 和 CICD)
从零到上线:Node.js 项目的完整部署流程(包含 Docker 和 CI/CD) 目录 项目初始化:构建一个简单的 Node.js 应用设置 Docker 环境:容器化你的应用配置 CI/CD:自动化构建与部署上线前的最后检查:…...
哈希桶(开散列)
文章目录 前言实现插入put方法实现get方法实现泛型类哈希桶 前言 哈希桶用来解决哈希冲突,牺牲空间换取时间。 通过数组和链表来实现哈希桶 public class Node{public int key;public int value;public Node next;public Node(int key,int value){this.keykey;this…...
DEBERTA:具有解耦注意力机制的解码增强型BERT
摘要 近年来,预训练神经语言模型的进展显著提升了许多自然语言处理(NLP)任务的性能。本文提出了一种新的模型架构DeBERTa(具有解耦注意力机制的解码增强型BERT),通过两种新技术改进了BERT和RoBERTa模型。第…...
WWW2025 多模态对话系统意图识别挑战赛方案总结
WWW2025 多模态对话系统意图识别挑战赛方案 代码实现:https://github.com/klayc-gzl/incent_internvl_2.5_8b 最终成绩: 大赛背景 互联网已成为提供客户服务的主要沟通渠道。网络客户服务面临的一个关键挑战是服务对话中多模态意图的高效识别。通过利…...
渗透测试--攻击常见的Web应用
本文章咱主要讨论,常见Web应用的攻击手法,其中并不完全,因为Web应用是在太多无法囊括全部,但其中的手法思想却值得我们借鉴,所以俺在此做了记录,希望对大家有帮助!主要有以下内容: 1…...
w173疫苗发布和接种预约系统
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
常用的跨域方案有哪些?
在前端开发中,跨域(Cross-Origin)是一个常见问题,通常是由于浏览器的同源策略(Same-Origin Policy)限制导致的。为了解决跨域问题,前端开发者可以采用多种方案。 1. CORS(跨域资源共…...
JS通过ASCII码值实现随机字符串的生成(可指定长度以及解决首位不出现数值)
在之前写过一篇“JS实现随机生成字符串(可指定长度)”,当时写的过于简单和传统,比较粗放。此次针对此问题,对随机生成字符串的功能进行优化处理,对随机取到的字符都通过程序自动来完成。 在写之前ÿ…...
IoTDB 1.2 升级 1.3 后 Pipe 插件失效
问题现象 客户使用 Pipe 功能将数据从 IoTDB 系统传输至 Kafka 集群,以便进行后续的数据处理与分析。在从企业版 1.2.5 升级至企业版 1.3.3.6 后,客户反馈 Kafka 的 consumer 无法接收到数据。经检查日志,发现存在以下报错: 问题…...
基于STM32的智能门锁安防系统(开源)
目录 项目演示 项目概述 硬件组成: 功能实现 1. 开锁模式 1.1 按键密码开锁 1.2 门禁卡开锁 1.3 指纹开锁 2. 功能备注 3. 硬件模块工作流程 3.1 步进电机控制 3.2 蜂鸣器提示 3.3 OLED显示 3.4 指纹与卡片管理 项目源代码分析 1. 主程序流程 (main…...
浅谈云端编辑器,分析其亮点与不足
浅谈云端编辑器,分析其亮点与不足 这个云端编辑器界面可以分为左侧题目筛选栏、中间题目描述与代码编辑区域、右侧AI提示功能三部分。以下是详细的分析: 1. 左侧题目筛选栏 层次结构清晰:左侧栏展示了一个层级结构,题目按主题分…...
Python字符串引号的嵌套问题
目录 1、使用不同类型的引号 2、使用转义字符 3、使用三重引号 4、嵌套三重引号 5、注意事项 在Python中,字符串可以使用单引号 () 或双引号 (") 来定义,但是如果我们要定义的字符串内也包含引号,字符串界定符的不正确使用会导致语法…...
latex如何让目录后面有点
使用前效果 在导言区引入以下代码 \usepackage[subfigure]{tocloft} \usepackage{subfigure} % 设置目录中 section 条目前导符号为连续点 \renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}}编译后的效果...
【力扣系列题目】不同路径 组合总和 最大连续1个数 打家劫舍{持续更新中...}
文章目录 不同路径不同路径[不同路径 II](https://leetcode.cn/problems/unique-paths-ii/)[不同路径 III](https://leetcode.cn/problems/unique-paths-iii/) 组合总和组合总和 【无重复数字无限制选择次数】[组合总和 II](https://leetcode.cn/problems/combination-sum-ii/)…...
方法建议ChatGPT提示词分享
方法建议 ChatGPT能够根据您的具体需求提供针对性的建议,帮助您选择最合适的研究方法。通过清晰的提示,ChatGPT可以精准地为您提供最契合的研究方案。此外,它还能协助您将这些方法灵活地应用于新的研究环境,提出创新的技术解决方案…...
Cursor的详细使用指南
以下是一份关于 Cursor 的详细使用指南: 一、安装与设置 下载与安装: 首先,访问 Cursor 的官方网站,根据你的操作系统(Windows、Mac 或 Linux)下载相应的安装程序。运行安装程序,按照屏幕上的提…...
Python----Python高级(正则表达式:语法规则,re库)
一、正则表达式 1.1、概念 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、 regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母࿰…...
电脑如何访问手机文件?
手机和电脑已经深深融入了我们的日常生活,无时无刻不在为我们提供服务。除了电脑远程操控电脑外,我们还可以在电脑上轻松地访问Android或iPhone手机上的文件。那么,如何使用电脑远程访问手机上的文件呢? 如何使用电脑访问手机文件…...
计算最接近的数
计算最接近的数 真题目录: 点击去查看 E B卷 100分题型 题目描述 给定一个数组X和正整数K,请找出使表达式: X[i] - X[i 1] - … - X[i K - 1] 结果最接近于数组中位数的下标 i ,如果有多个 i 满足条件,请返回最大的 i. 其中&…...
Ubuntu离线docker compose安装DataEase 2.10.4版本笔记
1、先准备一个可以正常上网的相同版本的Ubuntu系统,可以使用虚拟机。Ubuntu系统需要安装好docker compose或docker-compose 2、下载dataease-online-installer-v2.10.4-ce.tar在线安装包,解压并执行install.sh进行安装和启动 3、导出docker镜像 sudo d…...
C#使用WMI获取控制面板中安装的所有程序列表
C#使用WMI获取控制面板中安装的所有程序列表 WMI 全称Windows Management Instrumentation,Windows Management Instrumentation是Windows中用于提供共同的界面和对象模式以便访问有关操作系统、设备、应用程序和服务的管理信息。如果此服务被终止,多数基于 Windo…...
WPF2-1在xaml为对象的属性赋值.md
1. AttributeValue方式 1.1. 简单属性赋值1.2. 对象属性赋值 2. 属性标签的方式给属性赋值3. 标签扩展 (Markup Extensions) 3.1. StaticResource3.2. Binding 3.2.1. 普通 Binding3.2.2. ElementName Binding3.2.3. RelativeSource Binding3.2.4. StaticResource Binding (带参…...
社区版Dify实现文生视频 LLM+ComfyUI+混元视频
社区版Dify实现文生视频 LLMComfyUI混元视频 一、 社区版Dify实现私有化混元视频效果二、为什么社区版Dify可以在对话框实现文生视频?LLMComfyUI混元视频 实现流程图(重点)1. 文生视频模型支持ComfyUI2. ComfyUI可以轻松导出API实现封装3. Di…...
QT调用OpenSceneGraph
OSG和osgQt编译教程,实测通过 一、下载OpenSceneGraph OpenSceneGraphhttps://github.com/openscenegraph/OpenSceneGraph 二、使用CMAKE编译OpenSceneGraph 1.打开cmake,配置源代码目录 2. CMAKE_INSTALL_PREFIX设置为install文件夹,生…...