Axure官方正版
快速原型设计工具

中继器单条件、多条件搜索详解

今天教大家一个非常实用的技能——模糊搜索。在这里,我们以英雄联盟这个游戏的数据为例,在这个游戏里英雄都有自己的名字,同时也有玩家在交流过程中形成的昵称。例如,战争女神在玩家口中的昵称就是轮子妈。如何在搜索时同时对英雄的名字和昵称一起模糊搜索呢?

我们先创建一个中继器,把英雄的名字和昵称录入进去吧!再在上面加一个表头,便于我们知晓对应列数据的内容是什么。当然,我们还需要一个文本框,在文本框输入好内容回车后,将对应的淑女从中继器中筛选出来。

QQ截图20160326215555

中继器数据创建好之后,别忘记在【每项加载时】中把对应的数据赋值在对应的位置,例如我现在的这个案例,就是需要把名字文本设定到矩形中。

下面进入正题,首先我们想做的是在文本框按下回车之后才筛选,所以应该在交换中选择【按键按下时】,并且添加条件,按下的这个键必须是回车键之后才做出对应的动作。QQ截图20160326215850

下面是筛选中继器数据,在此我们要学习一个函数——[[LVAR.indexOf(‘searchValue’)]]

LVAR:在哪儿搜索?

searchValue:搜什么?如果是直接在此输入文本,需要两侧加单引号。

这个函数的意思是:在LVAR搜索searchValue。

 

那么,搜索到了之后呢?会反馈我们结果,如果没找到的话会返回值-1,如果找到了则会返回你找的这个字的位置。

需要注意的是,返回的位置是从0开始的,也就是说,如果在第1个字就出现了,那么返回值是0,第2个字出现了,那么返回值是1。

我们在制作需求中,一般都是只要出现了就算是有效数据,而不是需要这个字必须在第几位之后出现才有效。

所以,只要返回的数据大于-1,无论是任何值,意思都是说搜索到了这个文本的。

我们添加局部变量text,代表文本框内的文字:

QQ截图20160326220322

如果我们只想搜索名字中包含关键字的数据,那么这个函数就应该是:

[[(item.name.indexof(text)>-1]]

这个的意思是,在item.name这列数据中搜索text文本,如果搜索到了,那么就将数据筛选出来。

如果我们想要2列数据任意1列,任意1列搜索到就算符合条件呢?

第1列符合的话返回值是-1,第二列同样也是-1,两条加起来就是-2,所以,这个函数就应该是:

[[(item.name.indexof(text)+item.nickname.indexof(text))>-2]]

 

下面给大家出一个课后思考题:

如果我想要筛选出2列数据都包含text的数据呢?那么应该怎么写这个函数呢?

转载请注明出处:Axure中文网 » 中继器单条件、多条件搜索详解
axure share

评论 2

评论前必须登录!

 

  1. #2

    课后习题的函数应该:[[(item.name.indexof(text)+1)*(item.nickname.indexof(text)+1)>0]]

    景光4个月前 (09-18)
  2. #1

    昵称那一列怎么弄出来的。我咋不显示

    JWCHEN5个月前 (08-23)

购买Axure RP正版授权 终身可用

购买专业版购买团队版