公式 - 图1

公式编辑器使用场景

公式 - 图2

更新时间:2024-07-01 17:01:18

公式编辑器使用场景


事件面板与属性面板中,有许多场景都需要填写值或表达式(比如一个数学运算式),为此iVX提供了一个统一的表达式输入框,称为“公式编辑器”。以下是公式编辑器的一些常见的使用场景:

公式 - 图3

公式编辑器中,可以直接填写值,或引用对象,使用预置块等方法来输入内容,在接下来的文章中我们将分别介绍所有的输入方法。 ## 直接填写值 公式 - 图4 更新时间:2024-07-01 17:01:21

直接输入值(字面值)


字面值即直接填写的内容,包括文本、数值、特殊值(true,false,null)。 比如,将一个文本赋值为“hello”:

公式 - 图5

注意,在公式编辑器中直接填写一个文本(字符串)之后,公式编辑器失焦,会自动添加双引号,以标记这是一个字符串 其他字面值,包括数字,布尔值等,失焦之后保持原样,每一种值会有不同的颜色:

公式 - 图6 ##
引用对象值 公式 - 图7 更新时间:2024-07-01 17:01:25

引用对象树中的对象

1.引用一个对象的属性


在公式编辑器中,可以直接引用到对象树中对象的属性或动作, 比如,将一个文本赋值为一个输入框的内容:

公式 - 图8

以上操作、在属性面板的绑定框中同样有效,绑定之后效果如下:

公式 - 图9

绑定之后,用户在输入框中输入内容,文本的内容就会同步改变了。

2.引用一个变量的计算函数


除了对象属性,公式编辑器中还可以引用变量对象的计算函数:

公式 - 图10

所谓计算函数,即变量的一种转换方法,比如一个数组的元素个数,转为字符串等等, 都可以理解为从一个变量的当前信息中,根据某种规则,自动转换为另一种数据格式。 每一种变量,有不同的计算函数 比如,文本变量,可以截取字符串,替换字符, 对象数组,可以排序,过滤等等。

3.引用一个对象的方法


最后,在事件面板的公式编辑器中,还可以引用对象的方法,比如输入框的“获取当前字符”,行的“获取当前滚动距离”,或者直接引用一个动作组或函数的出参。比如:

公式 - 图11

在上图中,我们将文本赋值为一个动作组的返回结果1,这样做的实际效果就是先调用动作组,然后拿到它的返回结果,把其中的“结果1”参数赋值给文本。 另外,由于动作组有入参,需要在调用时指定入参,这个入参输入框也是一个公式编辑器。 在iVX中,公式编辑器是可以无限嵌套的。

注意,对象的方法,只能在事件面板中引用,不能在属性面板中绑定 比如,将一个文本的属性、绑定一个动作组的返回结果,这个操作是没有意义 的,因为我们系统并不知道何时去调用这个方法。

以下表格总结了:事件面板和属性面板公式编辑器-可以引用的类型:
引用类型 事件面板 属性面板
对象属性
对象方法
变量计算函数

下拉菜单 公式 - 图12

更新时间:2024-07-30 15:17:48

下拉菜单

当选中公式编辑器时,会出现一个系统默认下拉菜单,在这个下拉菜单中有我们提供的预制块,可以选中各种常用的参数和工具

公式 - 图13

如图所标记序号,为大家进行讲解:

1.返回结果引用


在事件面板中,可在公式编辑器中,引用到当前块之前执行的动作块(绿色块)的返回结果,比如,API的返回结果,数据库操作的返回结果等,详见事件面板文档-》动作的返回参数。

2.接收参数或事件参数


如果当前组件是服务、动作组或事务,则可以在公式编辑器中引用到当前组件的接收参数,即外部传给这个服务/动作组/事务的数据。 比如,在一个服务中,定义了提交数据这个参数,我们就可以在下拉列表中-找到它并选中它:

公式 - 图14

然后我们将提交数据这个参数,提交给数据库:

公式 - 图15


对于服务来说,除了自定义的接收参数,还有两个系统默认的接收参数:访问用户和请求信息 访问用户仅在当前应用绑定了用户中心后才会出现,从中可以拿到当前用户在登录后的用户ID和用户信息;请求信息,是当前服务请求本身的信息,比如IP,请求头等等。

在前端的事件面板中,如果某个触发事件,有抛出额外的参数,那么在默认下拉菜单中也可以拿到, 比如,一个点击事件的 X和Y参数,代表这个点击事件的点击位置

公式 - 图16

3.系统参数


系统参数主要包括系统时间、环境变量、当前应用信息等与当前前、后台运行环境相关的信息。其中,环境变量,仅当在配置面板中定义了环境变量后才会出现,当前应用信息,在前后端的可选项不同:

前端可选当前应用的 URL信息,路由信息,浏览器环境等, 后端只能够选到当前应用的ID(nid)与播放路径,因为后端是服务器环境,无法获取到前端在浏览器中获取到的信息。

4.循环变量


在事件面板中,当公式编辑器所在的块,处于一个循环块下时,可以选到循环变量。 根据循环的类型不同,循环变量的意义也不同:
  • 次数循环:循环变量代表当前循环的次数,从0开始;
  • 数组循环:循环变量代表当前循环对应的数组元素,如果目标数组是一个对象数组,还可以进一步选中数组内部的字段信息;
  • 条件循环:没有循环变量的概念,不可选 循环变量。

5.循环对象


属性面板中,如果当前组件在一个For循环容器,表格容器,或树形容器下, 则在绑定中,可以选到当前循环对应的循环对象, 比如,在For循环容器下,当前序号,代表当前的行号(从0开始), 当前数据,代表当前循环对应的数组元素 详见For循环容器,表格容器,或树形容器的使用文档。

6.预置输入块


预置块是公式编辑器中提供的常见的数据输入工具,通过默认下拉菜单可以选择:

公式 - 图17

1)从对象树选择

点击之后,自动出现对象树选择工具,可以从对象树中选择一个对象来引用, 功能和公式编辑器自带的对象选择器一致:

公式 - 图18

2)颜色块

公式 - 图19

如上图所示,用于在公式编辑器中输入一个颜色,颜色本质是一个字符串,比如“#FF1100”, 颜色块的作用是更直观的选取颜色,获得这个颜色字符串;

3)数组、对象、向量输入块

用于手动输入一个数组或对象,将一个一维数组赋值为[1,2,3]:

公式 - 图20

由于数组内、每个元素都对应一个公式编辑器, 我们可以进一步在数组内、添加更复杂的结构,比如数组嵌套数组:

公式 - 图21

注意,在iVX中,无论是前端还是后台,数组都是一种 json类型, 因此并不限制一个数组中、每个元素的类型相同,像上图中的结构,数组中第一个元素是一个数组,第二、三个元素是数值,是可以支持的。

对象与向量输入块的使用方法类似,只是对象与向量需要额外指定,比如:

公式 - 图22 #### 4)字符拼接块

字符拼接块用来把不同的内容、拼接成一个字符串, 比如在下面的例子中,我们将整数变量的值和一个百分号拼接在一起成为一个新的字符串:

公式 - 图23

字符拼接的拼接元素也可以像数组一样添加和删除,每个元素也是一个公式编辑器,可以嵌套。

注意,在iVX中,为了避免 混淆,“+”号只用作数学运算 因此,如果需要使用字符串拼接,必须使用字符拼接块。

5)值映射

映射,是一个高级的三元表达式 可以表示一个表达式的值在不同的情况下,对应的值是什么,比如:

公式 - 图24

在上图中,我们判断一个状态值变量的值, 如果它等于1,那么通用变量赋值为“成功”,如果它等于2,那么通用变量赋值为“失败”, 其余情况,既不是1又不是2,则赋值为“未知” 这样的值映射块类似是一个字典,将一个指定表达式的不同的值,映射为另一组值。

另一个常见的使用场景是:在属性绑定时,对组件的样式进行映射,比如:

公式 - 图25

在上图中,我们让一个文本的背景颜色,根据当前数据是否等于一个值,来动态改变。 当当前数据.value等于选中选项.值时,背景颜色为蓝色,否则为灰色。 这个配置在制作列表项的选中效果时很常用。

6)条件值

条件值是一个高级版的值映射,可以针对每个情况来设置一个对应值:

公式 - 图26

每个情况,可以设置多个条件:

公式 - 图27

注意,在条件判断块里,多个条件,只能选择一种关系 比如三个条件,选择且关系,那么就是这三个条件必须满足、才算当前情况满足, 如果是或的关系,就是三个条件只要满足一个,就算当前情况满足。
7)条件判断

条件判断-会根据条件判断式返回一个true或false
公式 - 图28
通常会配合对象数组查找,过滤,映射方法来使用
公式 - 图29
具体使用可以查看demo

8)空值判断

空值判断是一个简化的三元表达式:

公式 - 图30

如果前面的公式编辑器的值不为,则这个整体的值、为前面的公式编辑器的值;如果前面的公式编辑器的值为空,整体的值为后面的公式编辑器的值。
他用于简化一些常见的条件值(三元表达式)的写法, 如下图所示的俩种写法是完全一致的:
公式 - 图31

数学运算式

公式 - 图32

更新时间:2024-07-01 17:01:34

数学运算式


除了字面值、引用块和预置块,公式编辑器中还可以输入由以上三种类型的单元块构成的数学公式, 比如下图所示:

公式 - 图33

以上例子中,我们将一个通用变量赋值为一个数值变量的值+1 除以一个对象数组的行数 注意,数学公式中-所有的输入元素必须为数值,否则将无法输入,比如,在一个文本变量后,是无法添加“+”号的。

数学公式支持手动输入以下符号:()+ - * / % , 即括号,加,减,乘,除,取模(即取余数,比如10%3 = 1)


任意类型的额外菜单

公式 - 图34

更新时间:2024-07-01 17:01:40

使用场景


在我们实际开发中,数据的结构是多种多样的, 我要在公式编辑器中获取到某一个变量中一个字段的值,这时候我们就会用到公式编辑器的任意类型额外菜单。
这里我们以一个如下图所示的JSON为例:
公式 - 图35
如果我们想获取这个数组中第一条数据的change值, 我们之前在V41版本中,我们可以在公式编辑器里输入 a.打卡列表[0].developData.change
v41中的写法如下图所示:
公式 - 图36
由于在v50版本的事件面板中我们不能自由输入,对应的结构我们需要去选择对应变量类型的方法。
使用方法
在公式编辑器点选了变量后,再次点选这个公式编辑器,会自动弹出任意数据类型的额外菜单,我们不做选择会自动收回
公式 - 图37
任意数据类型的额外菜单包括文本、一维数组、二维数组、对象数组、对象、通用变量、布尔变量等,当你点选了某个数据类型后,他会提供该数据类型的方法。

还是以刚刚的JSON为例:
公式 - 图38
在v50中获取打卡列表这个对象的值,就在任意数据类型的额外菜单中点选 对象的某个值
公式 - 图39
在出现的对象键名的输入框中输入“打卡列表”,即可实现之前的通用变量. 打卡列表的功能:
公式 - 图40
使用了对象某个值方法后的数据就成为了一个对象数组,我们便可继续点选对象数组(数组+对象)的方法,去获取到进一步结构下的值,最终我们要获取到 change 中的值,可以如下图所示去点选公式编辑器:
公式 - 图41