如何让中继器也可以像数据库一样,实现数据查询、修改、判断等功能呢?文章为你解读。
在用Axure制作原型的过程中,大部分人都将中继器当做数据存储的工具,可以快速格式化展示一系列排版相同的数据,例如商品展示图文列表、各种文字表格等。但是你有没有想过,中继器也可以像数据库一样,实现数据查询、修改、判断等功能呢(例如在下表中直接查询ID为2的人的姓名,或者修改姓名为wang的人的学号)?
中继器相关函数难点分析 中继器函数 目前中继器中提供可以查询内部数据的函数只有「Repeater」,当我们使用此函数时只能获得以数组形式排列的整个中继器内的数据。例如: 对中继器使用函数Repeater.text时,得到以下数据
由此我们得知:中继器内的数据是以「数组」形式储存的,当输出时,每个数组之间通过换行符’\n’连接。 这时候有人会问,为什么不像数据库一样,直接按照Repeater[0][0]类似的形式直接输出某个字段呢?很抱歉,通过测试发现,目前Axure中的函数是不能识别数组的,而「Item.列名」这个函数也只能直接对中继器的动作中(例如筛选、更新等)使用,并不能在其他函数赋值中直接使用。如下图:
字符串处理 现在我们已经知道,通过直接调用中继器某个具体字段的方式已经破灭了。 回到开始,目前我们外部组件能获取中继器数据只有「Repeater」一个函数可以用了,但是它里面的数据是整个中继器的所有数据,而且还是每个数据换行展示的,离我们想要的某个字段差距太远了,怎么办呢? 1. 筛选中继器,获取指定行内容 首先我们做的的是筛选,通过中继器的筛选功能,将中继器数据指定到我们想要的那一行数据中,例如当我们想获得ID是1的人的姓名时,我们直接对ID进行筛选。
此时我们看到,其他没用行的数据已经消失了,貌似离我们想要的结果进了很多。 2. 格式化数据 如果想要获得姓名这个字段,我们需要将得到的数据进行格式化,调整为一行字符串显示,并且每个字段之间通过「,」隔开。这时候需要用到「split(‘separator’,limit)」函数(返回字符串),第一个参数是分割字符,此时我们用换行符’\n’进行分割,第二个字符是分割最长的字符串个数,这里可以省略。
是不是已经有点感觉了呢?Axure提供了那么多的字符串处理函数,如果想获得’li’这个字符串,是不是很简单呢? 3. 截取字符串 字符串都是以「0」开始排列的,’li’的位置应该是从2到3.那么我们使用「substring(from,to)」函数(返回字符串),就可以得到这个姓名了。 这时候有人会问,如果姓名字符长度不确定呢?没问题,我们已经知道了每个字符组是通过「,」隔开的,那么我们直接截取第一个’,’到第二个’,’之间的内容就可以了。 怎么找到’,’的位置呢?使用「indexOf(’searchValue’,start)」(返回数字)函数就可以了,前面的字段是查找内容’,’,后面的字段是字符串开始查找的位置,例如通过 LVAR.substring(LVAR.indexOf(‘,’),LVAR.indexOf(‘,’,(LVAR.indexOf(‘,’)+1))) OH,NO!你已经乱了?突然来了一个这么长的,到底是什么东西?那好,我给你分析下:
查找字符串LVAR中第一个’,’出现的位置,返回数字。为什么要+1呢?因为它的输出作为前面LVAR.indexOf(2)的起始查找位置,就是说查找2字符串时候,是从它第一个’,’后面的一个字符开始查找的。 从字符串LVAR第一个’,’的后一位开始查找’,’,说白了就是得到字符串LVAR第二个’,’的位置。 截取字符串LVAR从第一个’,’出现的位置开始到第二个’,’出现的位置。 (责任编辑:admin) |