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