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

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