Repeater(中继器)控件的用法
Axure中的Repeater控件顾名思义就是可以重复添加内容,而无需逐个进行添加。该控件对于以九宫格类、列表类的形式内容时非常有效,且支持用户添加、修改、删除控件中的内容。
Repeater控件的使用步骤为:
定义元素–>添加数据–>绑定数据–>修改样式–>数据操作
下面以添加列表类内容为例,逐步具体介绍该控件的使用方法。本文仅适用于具有一定Axure使用经验的用户阅读。
1 定义Repeater元素
1) 在页面中添加Repeater控件,添加后默认效果如下图:
2) 双击编辑控件,并按下图所示,为Repeater添加内容,并为各个组件命名:
此时,返回到Home页看到的效果如下(其中的数字1、2、3是默认值,暂时不用理会):
2 为Repeater添加数据
从上图可以看到Repeater的框架已经显示出来了,但里面的内容还没有,下面我们开始为中继器添加内容;
1) 打开中继器编辑界面,点击页面下部的小三角,打开Repeater 属性窗口,如下图所示:
其中,Repeater Dataset就是中继器中的数据,这里默认的1、2、3就是之前预览界面中出现的数字。
2) 按照上一节对图片、标签的定义,为中继器添加列值(列值最好与之前的定义一致)和数据,添加之后效果如下:
注意:由于头像是图片格式,但Axure并不支持输入图片路径的方式,因此图片需要在单元格中点击右键选择“导入图片”,只有这样图片才能正常显示。
3 绑定数据
Repeater的数据已经添加完成了,但你会发现此时在Home页预览Repeater仍然没有显示我们添加的数据,下面将介绍如果将我们添加的数据绑定到Repeater中。
1) 在Repeater属性窗口中,点击“中继器项目交互”,显示默认内容:
2) 修改ItemLoad用例的定义,修改参考下图所示:
注意:头像要选择“设置图像”动作,其他内容选择“设置文本”。这一步非常重要,如果设置不对,头像将不显示。
3) 此时,返回到Home页预览Repeater就可以看到上述步骤中添加的数据内容了:
4 修改样式
至此,Repeater中最重要的部分已经定义完成,当然还可以对Repeater的样式进行简单调整,定义非常简单,请自行研究。下图为样式定义,供参考:
效果图如下:
5 数据操作
经过上述章节的步骤,你已经可以定义一个完整的Repeater控件,通过这种方式可以节省大量样式重复控件的添加工作。不过,这些只是Repeater基本的使用方法,其更大的价值在于可以动态添加、修改、删除数据。本章的内容属于Repeater进阶用法,供有需要的读者参考。当然,如果你的原型图中并不需要动态增删改数据的效果,那么有之前的知识也够用。
5.1 添加数据
1) 接上文的步骤,在Home页放置一个按钮,用于为Repeater添加数据:
2) 为该按钮添加单击效果,当点击按钮时为Repeater添加一行数据,如下图:
注意:
A. 这里每次只能添加1行,如果定义了多行数据,则点击按钮时会一次性添加多行。
B. 每次点击按钮时添加的行数据是相同的,如果想要添加不一样的数据,则需要配合其他的方法,此处不做说明。
3) 预览Home页,每点击1次“添加行”按钮就可以在Repeater中添加1行:
5.2 修改数据
1) 打开Repeater编辑界面,定义“修改”按钮的点击事件,实现点击该按钮修改该行description字段的功能,定义如下图:
2) 预览Home页,点击每行后面到“修改”按钮即可以修改该行description字段的值:
5.3 删除单行数据
1) 打开Repeater编辑界面,定义“删除”按钮的点击事件,实现点击该按钮删除该行的功能,定义如下图:
2) 预览Home页,点击每行后面到“删除”按钮即可以删除该行数据。
5.4 删除多行数据
如果需要选择多行然后批量删除,可以使用checkbox控件,并配合Mark Rows进行删除,步骤如下。
1) Repeater中行首增加一个checkbox控件,并定义该控件的状态改变事件,实现当选中checkbox时标记该行,取消选中时取消标记该行,定义如下图:
2) 在Home页中增加“删除选中行”按钮,并定义该按钮的点击事件,实现点击该按钮可以删除checkbox被选中的行,定义如下图:
3) 预览Home页,点击“删除选中行”按钮即可以删除多行数据。
Axure学习笔记:中继器之价格统计
最近开始捯饬Axure,刚做完一个自认为比较简单的表单,大概完整耗时3天……发现中继器里面还是有很多坑。
主要界面
预期实现功能
-
选中每一行,bak(最后一列)出现当前行汇总价格,totalPrice自动汇总;
-
选中三行后,自动选中chk-all;
-
取消选中行,自动取消选中chk-all,且汇总价出现变化;
-
选中/取消选中(含单击、选中)chk-all,自动选中/取消选中所有行,且价格变化正确;
简要思路
选中每行可以有三种方案
-
选中isChosen
-
单击isChosen
-
单击InfoCombo
最初为了方便,选择了第三种,事件中内容比较简单,主要是totalPrice计算公式如图:
另外,为了满足自动判断,初始化全局变量Init为0,用于计算是否需要勾选chk-all,主要逻辑如下:
-
选中一行,Init=[[Init+1]],并计算当前行的总价;
-
取消选中当前行,Init=[[Init-1]];
-
选中chk-all,Init=repeater.dataCount(语法将就看下);
-
取消选中chk-all,Init=0;
接下来,问题来了。
选中chk-all的时候,如何汇总价格?由于InfoCombo只有“单击”事件,chk-all的事件中没有“单击”,无法触达每行的计算行为,第三种方案不行;(暂时认为不行)
换方案2,isChosen的单击事件,刚开始就遇到坑;这货对于条件的解读居然是反的。。。网上查到资料解释如下:
复选框部件支持OnClick事件用于响应单击操作,在OnClick事件中可以依据复选框部件的状态执行 相应的动作。但需要注意的时,在此处判断复选框的状态得到的是单击后的复选框的状态,例如复选框处于未选中状态,在OnClick事件中,该复选框已处于 选中状态,如果复选框处于选中状态,在OnClick事件中,该复选框已处于未选中状态。
不过绕过这个坑后,由于出现跟方案3类似的情况,仍旧无法汇总价格。
最后回到方案1:选中isChosen复选框时进行计算;
另外,选择“单击”chk-all来触发每行的选中事件,如果使用“选中/未选中”,则会出现前者的未选中事件触发后者的未选中,导致异常。
关键配置如下:
(1)每行
(2)chk-all
从表面上看,应该没问题了,开始生成页面测试,出现如下幺蛾子:
选中复选框的时候,“选中”事件触发了两次,前思后想,结合第一个方案判断,应该是:选中复选框的时候,同时算作选中了repeater的当前行(含复选框)。所以仅靠第一个方案仍然无法实现价格汇总,接下来想到方案四,使用单击计算Init,选中计算价格,不过由于选中触发两次,价格汇总有一定难度;
最后回到最初的方案,发现“由于InfoCombo只有“单击”事件,chk-all的事件中没有“单击””这个思路可能有点问题,chk-all单击时应该能嵌套一个事件。之后,需要设置一个标志位flag来表示单击事件是否是由chk-all触发,否则在单击某行之后再去单击chk-all,该行会取消选择;
关键设置
chk-all单击设置(注意allFlag的还原)
每行单击事件设置
实现效果
总结
-
正文中标粗部分;
-
复选框/全选框之间在点击时的互斥关系,一定要提前想清楚;(体现在标志位使用完之后的重置)
Axure8.0教程:利用中继器对表格的增删改操作
一直都是只看不发的那种,运用axure制作原型也有很长一段时间了,最近升级到8.0,用起来各种顺手啊,就写了一个中继器的教程,供新手学习。
原型主要是通过中继器实现表格的增删改操作,示例如下:
1 开工前的原件准备工作
文本框矩形框数个、下拉框一个、按钮两个、中继器一个。建议做好原件命名,因为之后会涉及到蛮多的交互,清晰的命名可以避免出现混乱。
然后我们需要对中继器做一些处理,点击中继器,右侧它的属性页,可以把三个行都删除,然后双击中继器进入中继器编辑页面。
按照表格每一列的名称在中继器内放入6个矩形框,做好元件命名。
现在是这个样子的。
2 数据添加功能
准备工作完成,然后我们需要为中继器添加一下动作,中继器属性面板选择每项载入时,当打开网页或者添加数据时候,为中继器加载数据集到元件。
特别注意的是,为了实现编号自增,编号的动作设置为[[item.index]]
中继器属性面板为中继器数据集添加列,也可以手动添加一行数据,如果是7.0的版本你的中继器数据集应该再页面下方,8.0整合到右侧
之后需要为添加按钮配置点击动作,为中继器“添加行”
点击下方的 添加行 ,把输入框和中继器数据集绑定起来:
到此,添加功能已经完成。
3 单行选择+删除行
进入中继器页面,选中6个矩形框,设置选中的动作—填充颜色
同样是选中6个矩形框的状态,按 ctrl+g,将6个矩形设为选项组,别忘了添加一个选项组名称(很重要),添加鼠标点击动作,
标记行是稍后的删除动作需要用到的,现在已经可以选择行,但是没有单选效果,回到中继器属性
中间的勾去掉即可。
下面为“删除行”按钮配置动作
此处非常简单,只需要为中继器删除行选择已标记即可,我们上一步标记行的意义就在于此。
4 修改行
点击修改按钮,改行变为可编辑状态,同时修改按钮变成保存按钮,点击保存之后保存修改后的数据。
中继器修改框拖入两个文本矩形,一个修改(xiugai)一个保存(baocun),默认保存文本为隐藏状态。
Xingming、xingbie、zhiwei、youxiang四个矩形框分别拖入一个文本输入框,命名为”xiugai-xingming、xiugai-xingbie、xiugai-zhiwei、xiugai-youxiang“去掉边框设为隐藏状态。
然后为修改按钮配置动作:
点击修改按钮,显示隐藏文本输入框,同时文本输入框获取当前行的值。
然后为保存按钮配置动作,点击保存时中继器更新行,同时中继器数据集应该设置为刚刚的隐藏文本框,这里与之前添加按钮的配置基本一样
至此,一个简单的利用中继器增删改的原型设计完成。
但是在预览原型的时候会发现一些问题:
添加数据的时候性别不选择,或者输入为空也可以添加成功,修改行的时候也有同样的问题,而且性别的位置可以随意输入没有任何限制。
我上传的原型中是有一些限制的,这里就不放出具体教程了,有不明白的可以咨询。头一次写,会有一些不清晰的地方,欢迎建议指正!
rp文件地址:http://pan.baidu.com/s/1pL2dW63
Axure 组件重写系列(二):用中继器搞定下拉框重写
回答上一篇文章中网友的评论。真实案例,用中继器搞定下拉框
上一篇文章已经介绍了基础组件“文本框”“下拉框”的重写实现,我们已经可以实现以下自定义效果:
文本框:
下拉框:
那么问题来了,在一个系统中我们需要多次复用下拉框,每个下拉框的下拉预设值在不同页面里面肯定是不一样的,如果下拉数量及内容有所改变,那么我们对每个下拉“子菜单”就要进行繁琐的编辑,虽然ctrl+c、ctrl+v能帮我们提升效率,但毕竟这样的组件复用性显然太低,再加上如果我们对下拉菜单的底色、边框等做调整,意味着所有子项需要删掉重置…
在认识中继器之前,这一切是多么让人抓狂,而中继器却能轻松解决我们的烦恼,我们马上来见识一下axure这件大杀器!
那么什么是中继器?
如果说“动态面板”是PPT,那么“中继器”更像是EXCEL。中继器,英文名“Repeater”,我觉得重复器的定义更方便我们对它的理解,如果稍微学过编程的童鞋,把中继器的编辑原理当成是面向对象中对“类”的编辑,中继器的展示当成对“实例”的展示会相当好理解。那么没学过编程的童鞋呢?其实,我们可以把中继器看成一个“模版”,我们在这个模版中的任何编辑,都会影响到用了这个模版的所有组件。
下面,我们通过对上一篇文章中“下拉框”的改写来理解中继器。
一、下拉框重写(中继器方式)
这部分上一篇已经讲过了,完事之后我们能看到以下效果:
接下来,开始我们的重头戏,中继器创建:
看完这个对比,大家能否理解我前面说的“模版”比喻了呢?
那么,决定中继器内容的是中继器里面的文字编辑吗?当然是!
中继器强大的地方,在于它能将类似于excel的行列数据,通过axure提供的交互事件与模版下的每个实例进行绑定。
那么这个类似于excel的数据编辑器长什么样呢?
很多小伙伴(包括我)一开始不知道这个编辑器藏在哪,下面我提供两种方式:
【方式一】点击单击中继器,在右侧“属性”下方找到
【方式二】双击中继器,进入后单机页面空白处,在“属性”下方找到这个表里的数据可以任意更改,如EXCEL那般。我们注意到,默认的中继器只有3个实例,对应表里只有3行,我们往表里增加1行,那么会对应会增加1个实例,以此类推。
那么,怎么把表里的数据跟我们的“模版”关联呢,我们继续“下拉框”的教程。
在这一节中,我们对中继器“每项加载”交互实例添加了文本的绑定,在这里,如果有童鞋疑问:
为什么不用“加载时”,而用“每项加载”?
这里先卖个关子,可以剧透一点的是,加载时也可以实现文本的绑定,但是需要在浏览器中才能浏览到实时数据,而“每项加载”在axure视图就能看到,至于在其他中继器元素的表现上,二者的渲染也不尽相同,这个我们以后在展开细说。
到这里,我们已经完成了对“子菜单”模版的基本编辑,只差最后一部就能实现下拉框了。
至此,我们已经完成了下拉框的中继器式改写,可以优雅的实现以下效果了:
如果想改变子菜单内容,只须改变表格内容即可:
这样的复用性,比起原生组件来说也不逞多让了吧?
当然,有的小伙伴会纠结于这种实现方式下,border堆叠的bug,如下图:
这是由于中继器垂直排列的方式引起的,虽然中继器也有针对垂直排列的间隔调整,但效果不尽如人意,作为强迫症,我还是找到了解决的方案,就是边框调整,把原来的四边框,调整为三边框,虽然第一个子菜单没有了上边框,但由于受到父菜单的遮挡,整个子菜单展示也没有什么瑕疵了^0^
二、日期控件基础版
接下来我们趁热打铁,通过“日期控件”的实现来加加深对中继器的理解
(PS.日期控件axure并未提供原生版本,所以也谈不上重写,请忽略0.0)
本期我们做的是日期控件的基础版本
功能点:点击父菜单(文本框)展示日期子菜单,点击日期后将日期自动填充到父菜单,并关闭子菜单。
之所以说是基础版本呢,是因为本期只实现到一个月(31天)的功能点选,这对于大部分产品展示来说其实已经很够用了,当然后续我们也会介绍一年12个月的实现方式,请大家不要着急哈。
来,下面开始制作过程。
第一步完成后我们能看到如下效果:
完成了父菜单框架的搭建,接下来我们需要去创建日期控件子菜单。
接下来,我们只需要将数据和中继器绑定起来,就能完成日期控件了。
到这里,我们已经实现了日期控件的基本版制作了,请看效果图:
至于一些制作过程中的细节(如hover日期改变底色等)就不铺开阐述了,不懂的小伙伴可以百度一下~
至此,我们已经完成了三个组件的重写(新写),当然,同一个组件有多种实现方式,例如我们的下拉框就有“纯动态面板”制作以及“动态面板+中继器”制作,虽然方法有多种,但基于复用性和简便性的综合考量,由中继器编写的组件还是更讨好用户喜欢的,但是,中继器在使用过程中还是有很多大坑小坑,以后会慢慢带领大家一起揭晓~
在下一篇文章中,我们会对axure的常用组件“表格”进行重写,尽情期待~