玩轉Axure:如何實現搜索框聯想詞效果

16 評論 15400 瀏覽 71 收藏 7 分鐘

我們幾乎每天都會使用到搜索功能,在使用百度的時候經常能看到在搜索框中你只要輸入部分關鍵詞,就能看到下邊列出來的候選詞,這種方法不僅能夠幫助那些無法準確定位要搜索什么詞的用戶,還提高了搜索效率和準確性。

在我們日常使用中除了搜索引擎之外的電商,內容類產品中也尤為常見,接下來就講講如何在原型中體現該效果。

先看效果:

在開始之前,先把思路梳理成流程,便于更好理解實現原理。

所有步驟主要分為兩大塊

01

在頁面中拖入一個“文本框”元件,調整大小為W:325 H:25,并命名為“搜索框”,然后在<提示文字>這一欄輸入“搜索”用作提示。

注意下這里因為我使用了已經完成的iPhoneX外殼元件,為了能夠美化效果,把文本框的“隱藏邊框”勾選上了,實際練習時可以不用,如需要元件庫可到我公眾號后臺回復“IOS11元件”獲取。

接下來在頁面中拖入一個“中繼器”放在文本框下方合適的位置,然后雙擊中繼器進入下一頁面,把頁面內的矩形調整大小為W:325 H:25,并將四周邊框取消,此處取消邊框的作用也是為了美觀。

回到默認頁面,為拖入的中繼器命名為“候選詞”,然后在<Cloumn0>這一列填充自己需要的候選詞。

2

為“搜索框”元件添加第一個用例,就如我們前邊流程梳理中所說的,若搜索框內文本改變時,需要先對文本添加判斷條件,再執行動作,所以我們為第一個用例添加一個判斷條件。

如下圖:

添加篩選動作于“候選詞”這個中繼器。

配置篩選函數,先添加一個局部變量,也就是搜索框中的文字。

先插入一個中繼器/數據集的函數<Item.Column0>。

再插入一個字符串函數<substrate(start,length)>。

最后調整函數表達如下圖所示,然后確定,篩選函數設置完畢。

此時添加顯示候選詞”動作,表明符合篩選條件的情況下顯示中繼器內容。

然后為“文本改變時”狀態添加第二個用例,設置當判斷條件“<1時”。

隱藏“候選詞”這個中繼器。

最后,當頁面載入時,設置中繼器為“隱藏”狀態。

完成以上所有步驟,就能展現文中開頭所示的效果,最后我們總結下,從我們給元件狀態配置的用例可以看出,最基本的思路就是“篩選—呈現”。

因此基于這個思路,我們需要做的就是提供篩選數據,而中繼器是一個很好的數據容納工具,然后篩選,符合條件則呈現。不符合條件則隱藏,后續我也會寫更多關于中繼器使用的例子。

這個實現效果并不復雜,至于文中的函數部分我已經做了拆分理解,如果實在難以理解可以嘗試多去練習幾次這個效果,對于沒有寫代碼基礎的同學(我也是)是相對比較難理解。在多次練習后,就會有一定的認識,在日常中這一點并不需要做產品的同學刻意去糾結,重要的是我們能夠理解其中的思路。

也希望大家能夠養成一種習慣,在進行練習前對任務流程進行思路梳理,這樣對理解邏輯更有幫助,有任何問題歡迎在文章底部留言討論。

 

作者:杰森,公眾號:十八般產品

本文由 @杰森 原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 老師的微信公眾號多少?

    來自安徽 回復
    1. 直接搜索“十八般產品”

      來自上海 回復
  2. 您好,我有個疑問,看那個函數的意思是,我們這里是按文字長度篩選的,不是按文本字體進行匹配的嗎?不知道我有沒有表達清楚我的意思,希望能理解??

    回復
    1. 你理解的沒錯,所以有另外一位大佬補充了另外的函數使用方法,可以把這里的都當成思路

      來自上海 回復
  3. 中繼器是axure的最高入門了,很少使用到。。。

    回復
    1. 是的,可以了解

      來自廣東 回復
  4. 發現人人都是產品經理網頁端跟App端中作者回復別人的評論是不同步的呀。。。

    來自廣東 回復
    1. 好吧,是延遲的問題 ??

      來自廣東 回復
  5. 用substr(start,length)這個函數為中繼器建立篩序有限制,因為案例中設定star為0,即限定是從首位字符開始匹配,如果首位字符不同,后面就不會被篩選。

    比如用戶要查找周杰倫,同類項中有周杰、周星馳、杰克,用這個函數進行查詢時,當輸入“周”時,下方的中繼器才能顯示模糊查詢的結果,會出現周杰倫、周杰、周星馳三個模糊選項。但是如果只是輸入“杰”字或“倫”,下方就沒有模糊查詢的結果。

    建議采用indexOf(‘searchValue’)這個參數,將篩選函數寫為[[Item.Column0.indexOf(LVAR1)!=-1]]

    函數的意思為,在中繼器中查詢文本框中文字出現的位置,也就是說,凡是能返回數字的條目,表示都是包含文本框文字的

    當查詢不到文本框文字時,返回值為-1(負1),即不包含查詢的關鍵字

    LVAR1局部變量為文本框元件文字

    !=-1的意思是即排除不包含查詢的關鍵字的數據

    這樣出現的模糊查詢的結果是,如果要查詢周杰倫,不論先輸入哪個字或一共輸入幾個字,只要包含周、杰、倫,任意一個字,模糊查詢的選項都會被列出來。

    來自北京 回復
    1. 漂亮!感謝這位大佬的拓展,有興趣的伙伴可以嘗試練習下

      來自廣東 回復
    2. 漂亮!感謝這位大佬的拓展,有興趣的伙伴可以實操一下

      回復
    3. 嗯嗯,我剛才試了一下,效果很好,謝謝分享

      回復
    4. 大佬666

      來自廣東 回復
    5. 謝謝大神分享,另外,改用函數過程中indexOf(‘searchValue’),直接在單引號內粘貼了變量名,所以預覽一直沒效果,后來仔細看了幾次才發現[[Item.Column0.indexOf(LVAR1)!=-1]]LVAR1不需要單引號,初學者留個腳印。

      來自安徽 回復