跳至主要內容
子表單數組處理
4 個月前已更新

前端事件對於子表欄位的支援可以分為兩種情況:

  1. 觸發欄位為主表欄位,返回欄位為子表欄位

  2. 觸發欄位為子表欄位,返回欄位也為子表欄位

觸發欄位為主表欄位

觸發欄位為主表欄位,返回值欄位為子表欄位時,可以接收陣列資料,並且自動按陣列的行數建立建立相同行數的子表單。如下圖中,可以自動將快遞的時間、狀態資訊(陣列)寫入子表單中,根據陣列的行數自動建立子表單行。

Jsonpath配置方式:使用[*]可以選取不固定長度的陣列,陣列裏面每有一行會自動在子表單建立一行;

例如返回資料為:

{     "showapi_res_body": {         "data": [             {                 "context": "【江蘇省無錫市安鎮二部公司】 已收入",                 "time": "2020-08-19 07:52:41"             },             {                 "context": "【江蘇省無錫市錫新開發區】 已發出 下一站 【江蘇省無錫市安鎮鎮一部公司】",                 "time": "2020-08-19 06:40:22"             },             {                 "context": "【江蘇省無錫市錫新開發區公司】 已收入",                 "time": "2020-08-19 06:20:16"             },             {                 "context": "【無錫轉運中心】 已發出 下一站 【江蘇省無錫市錫新開發區公司】",                 "time": "2020-08-19 04:16:37"             }         ]     } }

原先我們取得陣列一行的時間的話,需要使用:

$['showapi_res_body']['data'][0]['time'] 

這裡的[0]表示索引陣列第一行的資料。而如果我們是要取得陣列裏面所有的time,根據其行數自動在子表單建立行,則可以寫成:

$['showapi_res_body']['data'][*]['time'] 

觸發欄位為子表欄位

觸發欄位為子表欄位,返回值欄位也為子表欄位時,與觸發欄位和返回值欄位都是主表欄位的情況類似,觸發欄位和返回值欄位在子表單的同一行內存在對應關係。

以下圖中的天氣查詢為例,城市欄位為觸發欄位,當輸入省份和城市之後,將會自動觸發前端事件查詢天氣並返回天氣值寫入子表單同一行中對應的天氣欄位內。

此時返回資料為:

{     "ret": 200,     "data": {         "cityinfo": {             "provinces": "江蘇",             "city": "無錫",             "area": "無錫",             "id": "101190201",             "prov_py": "jiangsu",             "city_py": "wuxi",             "qh": "0510",             "jb": "2",             "yb": "214000",             "area_py": "wuxi",             "area_short_code": "wx",             "lng": "120.301663",             "lat": "31.574729"         },         "now": {             "id": "101190201",             "area_name": "無錫",             "city": {                 "night_air_temperature": "7",                 "day_air_temperature": "13",                 "wind_direction": "東北風轉北風",                 "wind_power": "<3級",                 "weather": "多雲",                 "weather_code": "01"             },             "detail": {                 "time": "15:30",                 "date": "12月01日",                 "week": "二",                 "temperature": "12",                 "wind_direction": "東北風",                 "wind_direction_str": "NE",                 "wind_power": "2級",                 "wind_speed": "<12km/h",                 "humidity": "58%",                 "weather": "多雲",                 "weather_code": "01",                 "weather_english": "Cloudy",                 "qy": "1027",                 "njd": "14.6km",                 "rain": "0",                 "aqi": "39",                 "quality": "優",                 "aqi_pm25": "57",                 "nongli": "十月十七",                 "sun_begin": "06:40",                 "sun_end": "16:55",                 "so2": "68",                 "o3": "34",                 "co": "26",                 "no2": "9",                 "pm10": "1",                 "kinect": "11",                 "shadow_kinect": "10.0",                 "ultraviolet_rays": "2級",                 "ultraviolet_rays_status": "低",                 "pressure_change": "穩定",                 "cloud_amount": "91%"             },             "update_time": 1606809680,             "alarm_list": []         }     },     "qt": 0.009 }

那麼,只需要將子欄位“天氣”的返回值設定為:

$['data']['now']['detail']['weather'] 

是否回答了您的問題?