Axure批量添加中继器数据-利用fire动作触发循环

最终实现效果:



以下是实现原理:

讲的详细些,包括思路、想法,希望能启发更多的人,用各种不同的方式实现效果。

1. 要用到的事件及函数:

    1)fire的用法:

            fire,中文翻译为触发事件,例如:

            设置按钮A【单击时】-》【改变按钮A的文本】

            设置按钮B【单击时】-》【fire按钮A的单击事件】

            那么,当我点击按钮B时,会触发按钮A的单击事件,也就是改变按钮A的文本。也就是说,我没有点击按钮A,但通过fire事件,也触发了按钮A的单击事件。

            假设,如果我设置了【按钮A】单击时可改变文本,同时,又设置了【按钮A】fire【按钮A】的单击事件,结果会如何呢???(小伙伴们可以尝试下,反正我的浏览器挂了)

            由此,我想到了可以利用fire事件,在Axure中完成类似编程中的【while】循环,前提是,一定要设置好循环条件,不要造成死循环!!!

        2)replace函数

                replace('searchvalue','newvalue') 用途:用新的字符串替换当前文本对象中指定的字符串。 参数:searchvalue为被替换的字符串;newvalue为新文本对象或字符串。 

                本案例中, 使用[[input.replace(',',',')]],将中文“,”替换成“,”,防止中英文混输导致无法识别分隔符。

        3)substring函数

                substring(from,to) 用途:从当前文本对象中截取从指定位置到另一指定位置区间的字符串。右侧位置不截取。 参数:from为指定区间的起始位置;to为指定区间的终止位置,该参数可省略,省略该参数则由起始位置截取至文本对象结尾。

                本案例中,使用[[varShuzu.substring(0,varShuzu.indexOf(','))]],将数组中每次第一个英文逗号前的字符取出来,添加到中继器中。

2. 循环逻辑:

    1)首先,我们要找个flag标记我们要开始进入循环了,并且改变这个flag标记为循环中,当我们循环完毕退出时,要重置这个flag标记为初始状态,以便下一次进入循环使用。

            本案例中,我用一个text文本[命名为shuzu]做标记,初始文本为循环标记,并将要处理的input字符串传给这个text。当这个text文本中的字符串未被处理完毕时,表示还需要继续循环;当这个text文本中的字符串被处理完的时候,重置这个字符串的文本为循环标记表示不需要再做循环了。

    2)流程图:


3)开始实现:先不触发fire自动循环,先看下我们的逻辑能否走通:

        设置一个按钮试验下,交互如下:     

        其中 :

        【jiequ】是截取出来的字符串,也是往中继器中添加的字符串:[[shuzu.substring(0,shuzu.indexOf(','))]],意思是截取第一个逗号之前的字符给自己赋值,后续往中继器中添加的字符也是截取到的字符。

          截取完之后,把剩下的字符塞回给要处理的数组:

        【shuzu】要处理的数组字符串:[[shuzu.substring(shuzu.indexOf(',')+1)]],意思是截取第一个逗号之后的字符给自己重新赋值,因为逗号之前的已经处理完了,已经添加到中继器里面了。

        【xunhuan】和【index】是验证效果用的,可以忽略。

效果如下:

    4)开始添加fire触发循环:


        注意:

        仅在循环体中添加fire,判断为循环结束时,不要触发fire!否则又会开始一轮循环,从而导致死循环!

        上方的第三个条件【字符串非初始字符串且不包含逗号】表示要处理的字符串已经处理完毕了,不要再循环了,所以没有添加fire事件!


        效果如下:


    5)搞定!现在我们可以将不需要的控件都进行隐藏,并且设置【input】输入控件按下回车时,触发自动循环的【单击】事件。

         PS. 触发自动循环的单击事件不是必须的,我比较懒,有耐心的朋友可以将这些事件都放在输入控件的按下回车事件中去,然后删除自动循环按钮,我只是为了少写些循环语句。。。

    6)完善下,当用户输入的字符中最后一个也是逗号的处理逻辑

            当用户输入的最后一个也是逗号时,会造成处理到最后一个逗号分隔时导致截取的文子串为空的情况,所以添加个过滤条件。注意,此时实际上已经不需要再往中级其中添加元素了,所以也是循环完成。



最终效果:




美化版:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容