Axure高級教程:如何從外部獲取Axure中繼器里的數(shù)據(jù)

Axure作為產(chǎn)品經(jīng)理必備神器之一,相信每個人都會基礎(chǔ)的操作和簡單甚至高階的原型。但是這篇文章分析的內(nèi)容,相信你可能從沒有這樣想過。
我們知道中繼器在Axure中實現(xiàn)數(shù)據(jù)動態(tài)展現(xiàn)的作用不言而喻,Axure提供了中繼器內(nèi)部的數(shù)據(jù)交換接口,但是沒有提供明顯的從外部獲取中繼器內(nèi)部數(shù)據(jù)的方法。
當你需要從外部獲取中繼器里的數(shù)據(jù)的時候就尷尬了,你將無法直接通過自帶的函數(shù)獲取到相應(yīng)數(shù)據(jù)。所以接下來我們看看如何從外部去獲取中繼器里的數(shù)據(jù)。
在軟件里,當前外部調(diào)用只提供了如下幾個函數(shù):
[[repeater]]、[[visibleitemCount]]、[[itemCount]]、[[dataCount]]、[[pageCount]]、[[pageindex]]
[[repeater]]函數(shù)提供一個基礎(chǔ)的中繼器對象,[[visibleitemCount]]函數(shù)獲取中繼器里可見的項目數(shù)…可以看到這幾個函數(shù)都不能直接實現(xiàn)數(shù)據(jù)調(diào)用的需求,但是[[Repeater]]
對象函數(shù)給了我們提示,如果我們聯(lián)想獲取文本值函數(shù)[[LVAR.text]]是不是可以創(chuàng)建一個獲取中繼器對象的函數(shù)[[Repeater.text]]。
當我們試圖使用[[Repeater.text]]的時候奇跡出現(xiàn)了,獲得了中繼器里存儲的所有數(shù)據(jù),似乎這些數(shù)據(jù)以列的方式展現(xiàn),原以為是矩形框太窄的原因?qū)е聰?shù)據(jù)以列排列,但是我嘗試拉寬文本框后數(shù)據(jù)仍然以列排列。
請看示例:
我創(chuàng)建一個有3行3列表單的中繼器,以1as2df3gh填充,并以此假定一個預(yù)設(shè)字符串:1as2df3gh,在使用[[Repeater.text]]函數(shù)后獲取的數(shù)據(jù)看似和字符串’1as2df3gh’相同,這里我們可以做一個簡單的判斷:
通過簡單的判斷我們發(fā)現(xiàn)這兩個值并不相同,通過觀察發(fā)現(xiàn)中繼器里的這串字符以列排列所以每行應(yīng)該有一個換行符,于是我想是否可以去掉換行符得到預(yù)設(shè)字符串呢?通過函數(shù)[[LAVAR.replace(‘\n’,”)]]把換行符替換為空,經(jīng)過再次判斷結(jié)果和預(yù)設(shè)值相同。
到現(xiàn)在,我們可以從外部獲取到已經(jīng)向中繼器里添加的數(shù)據(jù),只是目前只是獲取到一個字符串形式,通過對字符串的進一步處理,就可以獲取到我們想要的數(shù)據(jù)內(nèi)容。
經(jīng)過測試發(fā)現(xiàn):
1.中繼器以數(shù)組形式存儲數(shù)據(jù),并且中繼器里某些元件對象都將占據(jù)一個數(shù)組位置,在示例中我們使用的是表格,所以數(shù)據(jù)以換行符“\n”分割。
2.如果你的中繼器里有比如復(fù)選框、文本標簽、按鈕類等要取得精確的數(shù)據(jù)還需要通過[[LAVAR.replace(‘元件對象’,”)]]去除相應(yīng)的元件對象位。比如有復(fù)選框就用[[LAVAR.replace(‘復(fù)選框’,”)]],有按鈕類就用[[LAVAR.replace(‘BUTTON’,”)]]即可去除這些元件對象獲取原始數(shù)據(jù)。
實際應(yīng)用場景:
有如下場景【此場景我們不考慮實際的業(yè)務(wù)含義以及意義,所以在演示原型的任務(wù)流程上可能有所差異】:
需求:現(xiàn)有兩名學(xué)員,他倆要參加一場名為復(fù)訓(xùn)的訓(xùn)練,訓(xùn)練的時間、地點、訓(xùn)練的教員、檢查員都未知,需要后臺管理員在管理后臺進行詳細信息的分配操作,
任務(wù)流程分析:
首先在待訓(xùn)練學(xué)員頁面,在表單中有張三,李四兩名學(xué)員需要參加訓(xùn)練,初始狀態(tài)這個表單只有學(xué)員名稱、學(xué)員參加的訓(xùn)練名稱,沒有訓(xùn)練的詳細信息,比如訓(xùn)練的日期、地點以及教員是誰,點擊操作欄的按鈕進入到訓(xùn)練場次的管理頁面,建立好場次再把學(xué)員、教員、教員分別加入到訓(xùn)練場次中,點擊保存完成給張三李四分配一場復(fù)訓(xùn)的訓(xùn)練。在分配好訓(xùn)練后我們回到待訓(xùn)練學(xué)員頁面,這個時候兩名學(xué)員的訓(xùn)練信息已經(jīng)得到更新:
實現(xiàn)分析:
1.這是一個跨頁面數(shù)據(jù)傳遞需求,在Axure中能實現(xiàn)跨頁面數(shù)據(jù)交互的只有全局變量。
2.人員的添加表單可以增刪改查,說明表單由動態(tài)生成,表單應(yīng)該通過中繼器實現(xiàn)。
3.保存的內(nèi)容是查詢的結(jié)果,查詢只有單一屬性(學(xué)員姓名),結(jié)果具有同一數(shù)據(jù)的多個屬性(時間、地點、教員、檢查員),所以無法直接傳遞查詢的內(nèi)容到另一頁面。只有通過獲取中繼器的篩選結(jié)果再通過變量傳遞到另一頁面。
用戶流程:
1.在訓(xùn)練管理頁面點擊張三行的操作按鈕,頁面跳轉(zhuǎn)到場次管理頁面。
2.在場次管理依次點擊“場次導(dǎo)入”-“確定”,當場次列表展現(xiàn)的時候我們再點擊操作列的“生成場次”按鈕。
3.彈窗中選擇科目“復(fù)訓(xùn)”-“確定”,此時場次已經(jīng)自動生成。
4.點擊操作列的“添加學(xué)員”彈窗中輸入框輸入搜索到學(xué)員再點擊添加,然后點擊“添加教員按鈕”…搜索到教員點擊添加,最后點擊“添加檢查員”完成檢查員添加,列表中自動展現(xiàn)剛添加的學(xué)員以及教員,點擊保存按鈕確認提交。
5.點擊左側(cè)導(dǎo)航菜單“訓(xùn)練管理”,此時表單數(shù)據(jù)根據(jù)剛才在場次管理頁面的數(shù)據(jù)錄入更新。
最終實現(xiàn):
整個流程并不復(fù)雜,現(xiàn)在我們來看如何實現(xiàn)了剛才的整個人員添加以及參數(shù)的跨頁傳遞。
1.主要中繼器都放置在人員添加模態(tài)彈框中,請看示例:
2.這里我們使用了兩個中繼器,一個存放原始的人員列表ry_list0,除了名稱和數(shù)字列外其他數(shù)據(jù)列都默認隱藏:
一個作為接收用戶模糊查詢選擇的人員列表ry_list:
3.文本框模糊查詢即在中繼器ry_list0中篩選出有當前輸入內(nèi)容的中繼器行:
4.設(shè)置ry_list0行的鼠標單擊事件,在單擊時候向中繼器ry_list添加一行就把當前行的值傳遞到了ry_list:
5.在保存按鈕單擊事件我們把ry_list的值傳遞給全局變量:xy1,xy2,jy,jcy分別代表學(xué)員1,學(xué)員2,教員,檢查員,這里就使用到了我們一開始就探討的[[repeature.text]]函數(shù)的復(fù)合形式:
6.最后,在模擬機管理頁面載入時接收全局變量的值到指定的表單位置即可:
以下提供本原型在線演示地址:
原型下載:
本文由 @小白不吃菜 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
若中繼器中元件為輸入框的話,則獲取不了
不錯,來學(xué)習(xí)下
不明覺厲。。。這種情況我就簡單說明一下正常和異常流程。專門有個tower在線文檔記錄各個字段詳細參數(shù)。。。。
嗯,一般工作中很少會做這么細的,不喜歡用tower。。
那你用啥?github?