事件

本⽂详细介绍了逻辑开发中的事件机制,包括平台⽀持的事件类型、事件处理器的配置和执⾏等。事件被触发时,将执行绑定的操作,可以类比为编程中的回调函数概念。

事件类型

在魔笔平台中,事件可分为页面事件、页面组件事件、前端函数事件和集成操作事件。每种类型的事件都涵盖了不同的用户操作或系统状态变化,并可以触发相应的处理逻辑。

页面事件

页面事件是在整个页面级别触发的事件。下表列举了平台目前支持的所有页面事件:

事件名称

事件描述

挂载(mounted)

事件描述⻚⾯加载完成时(页面加载成功后)触发,可以⽤来初始化数据或设置状态。

页面组件事件

页面组件事件是在用户与页面中各个组件进行交互时触发的事件。下表列举了平台目前支持的常见页面组件事件:

说明

不同页面组件支持的事件类型存在差异,请参考每个组件的详细说明文档。

事件名称

事件描述

点击(click)

用户点击组件时触发,常见于按钮、链接等组件。

改变(change)

用户修改输入内容时触发,常见于输入框、日期选择器组件。

聚焦(focus)

组件获得焦点时触发,常见于输入框、日期选择器等组件。

失焦(blur)

组件失去焦点时触发,常见于输入框、日期选择器等组件。

前端函数事件

前端函数事件是由自定义前端函数执行所触发的事件。下表列举了平台目前支持的所有前端函数事件:

事件名称

事件描述

成功(success)

前端函数执行成功后触发。

失败(failure)

前端函数执行失败后触发。

集成操作事件

集成操作事件是应用前端与后端服务和外部 API 交互时触发的事件。下表列举了平台目前支持的所有集成操作事件:

事件名称

事件描述

成功(success)

集成操作执行成功后触发。

失败(failure)

集成操作执行失败后触发。

事件处理器

为了响应特定的运行时事件,开发者需要在设计器中添加和配置一个或多个事件处理器,类似传统 JavaScript 开发中的addEventListener机制。

添加和配置事件处理器

开发者可以在设计器中打开特定的页面、页面组件、前端函数或集成操作,并在弹出的属性面板对应位置添加和配置事件处理器。

以页面组件为例,点击属性面板中「交互-事件」右侧的“+”按钮,即可添加一个新的事件处理器。再次单击新添加的事件处理器条目,即可在弹出的“配置事件处理器”面板中完成配置。下图展示了如何为一个页面按钮组件的“点击(click)”事件配置事件处理器:

image

事件处理器的执行方式

当事件发生时,其对应的所有事件处理器都会立即在前端浏览器环境中执行。每个事件处理器可以认为是一个独立的 JavaScript 回调函数,它们在事件发生时被并行触发,彼此之间不存在时序依赖和先后性保证。

image

此外,单个事件在被响应的过程中,还可以触发新的事件,从而形成“触发 → 响应 → 触发 → 响应 →...”这样的事件处理链。开发者可以利用这一特性,编排和实现基于事件的复杂逻辑流程。

image

事件处理器的动作类型

配置一个事件处理器时,需要选择在事件触发时该处理器要执行的具体操作,即“动作”。下表列举了目前平台支持的所有事件处理器动作类型:

动作类型

用途描述

配置参数

控制组件

控制页面上的组件行为,例如:显示、隐藏、启用或禁用组件。

  • 组件:目标组件标识

  • 方法:操作组件时执行的方法

集成操作

调用一个集成操作,例如:执行数据库SQL、访问外部 HTTP API。

  • 集成:目标集成操作标识

  • 参数:传递给集成操作的参数对象,例如 {{ {param1:input1.value,param2:input2.value} }}

前端函数

调用一个前端函数

  • 前端函数:目标前端函数标识

  • 参数:传递给前端函数的参数对象,例如 {{ {param1:input1.value,param2:input2.value} }}

定时器

调用一个定时器

  • 定时器:目标定时器标识

  • 方法:操作定时器时执行的方法

  • 参数:传递给定时器的参数对象,例如 {{ {param1:input1.value,param2:input2.value} }}

设置变量

更新一个作用域内可见变量的值。

  • 变量:目标变量标识

  • 值:要设置的目标变量值

执行脚本

执行一段自定义的前端 JavaScript 脚本。

  • 脚本代码:完整的代码内容

显示消息

在页面上弹出一个消息通知框(一段时间后自动消失),为用户提供即时反馈。

  • 内容:消息内容

  • 类型:信息 / 成功 / 警告 / 错误

  • 持续时间(单位:秒):消息弹出多久后自动消失

跳转页面

导航到指定页面,实现应用内页面跳转。

  • 页面:目标页面标识

  • query 对象:跳转时携带的 URL 查询参数,格式为 JSON 对象

  • hash 字符串:跳转时携带的 URL片段标识,格式为字符串

  • 目标窗口:当前窗口 / 新窗口 / 父窗口 / 顶层窗口

用户登出

登出当前已登录用户,并清理用户会话。

  • 无参数

事件处理器的高级配置

除了上述基础配置,事件处理器还支持如下一些高级配置选项,以允许开发者对事件处理逻辑进行更加精细的控制。

配置选项

用途描述

配置参数

执行条件

允许开发者指定事件处理器仅在特定条件下才执行。

  • 条件表达式:需返回一个布尔值:true 代表执行,false 代表不执行

防抖

用于限制高频率触发的事件处理器执行次数,以减少不必要的操作执行次数。

  • 防抖等待时间(单位:毫秒):在等待时间内没有再次触发事件,才会执行事件处理器