循环创建

循环 - 图1

更新时间:2024-05-22 11:00:58
文档 动作

动作(名称与参数)表

动作名称 动作说明 动作参数 动作参数说明 获取数据 获取数据 -/- 设置数据 设置for循环的数据来源 一维数组、二维数组对象数组等变量。 校验数据 用于校验数据是否满足格式和类型要求。返回校验结果(是否成功,无效字段数组) -/-

动作(回调)表

对应动作 结果引用 结果状态 结果引用属性 结果属性说明 校验数据 校验结果 完成 成功 失败 无效字段数组 不满足要求的字段数组。 是否成功 校验结果是否成功。 数据结果 校验后的数 属性·动作·事件
功能概述
循环创建组件可以在应用程序运行时,动态创建出具有相同对象结构事件逻辑UI单元模块(可以包含布局类组件、UI类组件、变量类组件),并通过绑定数据源的方式来控制动态UI单元的数量及属性值,常和条件容器一起筛选创建模块化动态列表(筛选的方法见条件容器的文档),如下图所示的demo信息页;
循环 - 图2
相比于在对象树中静态的添加对象和事件,循环创建可以极大的减少项目工作量和项目复杂度,并且能更好的满足应用场景的动态需求 使用循环创建时,要先抽象出列表中UI单元的共同结构和共同事件逻辑。在上图所示的demo信息页中,UI单元(即每个demo卡片)的共同结构包含demo的封面图、项目复杂度及demo名称、浏览次数,难度等级、下载图标,共同事件逻辑包含点击封面图时预览demo、点击下载按钮时下载demo至账号。
基本用法
将提取出的UI单元-添加为循环创建组件的子对象,循环创建组件会根据指定的数据源(通常为二维数组或对象数组)的行数来创建出相同数量的UI单元。 如果循环创建组件位于相对定位环境中,则所创建的UI单元将自动进行横向或纵向排布;如果循环创建组件位于绝对定位环境中,则所创建的UI单元会重叠在一起,需要通过绑定X、Y坐标来实现排列,这种情况可以配合行、列组件来实现自动排布。
尝试用循环创建制作如下图所示的单词表:
循环 - 图3
步骤1 UI单元的提取及对象的添加
单词表的每一个词条为一个UI单元,包含一个英文单词和对应的中文解释

中、英文在同一行内两端对齐。在前台目录下添加一个对象数组、一个循环创建、一个行、两个文本。添加后的对象树如下:

循环 - 图4

步骤2 数据源的编辑
数据源中的每一行、对应一个动态创建出来的UI单元,

每一列对应UI单元的一个属性。本例中的词条具有中文、英文两个属性。将这些词条信息填入对象数组:
循环 - 图5
如果使用一维数组作为循环创建的数据源,则一维数组的行代表UI单元的属性值,代表UI单元的数量;由于一维数组只有一行,即只能控制UI单元的一个属性值, 通常只用来创建极简单的列表。通用变量也可以作为循环创建的数据源,但要求其最外层结构为数组。
步骤3 数据源及属性的绑定
循环创建组件的“数据来源”绑定为对象数组:
循环 - 图6
此时预览,可以看到已经创建出了多个词条,数量与对象数组的行数相同,但词条内容尚未与每行相对应。 中文文本组件的“内容”绑定为“当前数据1.中文”:
循环 - 图7
“当前数据1”表示当前UI单元在对象数组中的对应行的值,此处的绑定需要进一步选择列名“中文”。使用嵌套循环创建时,“当前数据1”表示当前UI单元在最外层循环中的对应行的值,“当前数据2”表示当前UI单元在第二层循环中的对应行的值,以此类推。
用同样的方法,将英文文本组件的“内容”绑定为“当前数据1.英文”:
循环 - 图8
以上步骤中省略了样式属性的调整,开发者可以自行尝试。再次进行预览时,即可看到完整的列表效果。 对于数据源中的数据不方便直接绑定 的情况,可以在UI单元中添加变量,利用变量的方法列表对变量值进行处理,并获得相应结果后再进行绑定。例如数据为Unix时间戳,需要绑定至年、月、日、时、分、秒等文本对象,则需要借助时间变量及其方法列表-来完成绑定。开发者可以自行尝试。
UI单元内部的对象间操作
循环创建的UI单元-不能被该UI单元以外的对象操作。如果要改变UI单元内某个对象的属性,可以通过以下三种途径来实现:被同一UI单元内的其他对象改变、绑定外部变量、改变数据源
本节讲解:如何进行同一UI单元内部的-对象间操作。尝试实现答题选项列表,为优化用户体验,当点击选项的任意位置时、都可以改变该选项前复选框的选中状态:
循环 - 图9
步骤1 对象的添加
前台目录下,添加一个一维数组、一个循环创建、一个行、一个复选框、一个文本,给行添加事件。添加后的对象树如下:
循环 - 图10
步骤2 数据源的编辑
一维数组存放选项,编辑一维数组如下:
循环 - 图11
步骤3 数据源及属性的绑定
对循环创建组件的“数据来源”和文本组件的“内容”进行如下绑定:
循环 - 图12循环 - 图13
由于本例中的数据源为一维数组,“当前数据1”为UI单元对应的一维数组中的某个元素,即字母A、B、C或D;如果数据源是二维数组/对象数组,此处的绑定需要在“当前数据1”后继续选择二维数组/对象数组的列名。
步骤4 动态对象事件的编辑
编辑行组件的点击事件,使该行所在UI单元中的复选框-的选中/取消状态交替进行:
循环 - 图14
以上步骤中,省略了样式属性的调整,开发者可以自行尝试。再次进行预览时,即可看到完整的列表效果。
绑定UI单元外部的变量
将上节的例子,改写为用外部变量控制复选框的选中状态,实现单选效果:
循环 - 图15
步骤1 对象的添加
原对象树的基础上,添加一个文本变量,命名为“选择”:
循环 - 图16
步骤2 动态对象事件的编辑
修改行组件的点击事件,将其所在的UI单元对应的数据源中的元素值(即选项字母)赋值给“选择”:
循环 - 图17
“当前序号1”表示当前UI单元在对象数组中的对应行的序号。使用嵌套循环创建时,“当前序号1”表示当前UI单元在最外层循环中对应的序号,“当前序号2”表示在第二层循环中对应的序号,以此类推。
步骤3 属性的绑定
如下图所示绑定复选框的“是否选中”属性 如果当前UI单元所对应的选项字母在与“选择”相等,则选中复选框,否则取消选中:
循环 - 图18
进行预览时,即可看到效果。
修改数据源
将上节的例子,改写为当点击选项时删除该选项:
循环 - 图19
步骤1 动态对象事件的编辑
循环 - 图20
进行预览时,即可看到效果。 修改数据源-会触发所有UI单元的重新渲染,会使同期进行的UI单元内部的对象间操作失效。如需同时进行数据源的修改和UI单元内部的对象间操作,请将其中之一迟0.01秒。
循环创建demo:预览效果下载地址