Mashup Builder > 小器具 > 標準小器具 > 功能表列小器具 (主題化) > 使用資料負載定義功能表列項目
使用資料負載定義功能表列項目
除了選單實體以外,您還可以使用 MenuEntry 資料形式來建立定義選單項目的資料負載。資料負載中的每一列都是功能表列上的項目。您可以使用 PrimaryNavDataSecondaryNavData 小器具內容,將資料負載繫結至 Mashup Builder 中的功能表列。欲顯示主要與次要導覽群組的項目,請建立兩個傳回格式化資料負載的服務:一個用於主要項目,另一個用於次要項目。當選單包含多個導覽層級時,您可以使用 parentMenuIdMenuId 欄位來定義項目的階層。不含 parentMenuId 值的選單會在功能表列上顯示為頂層項目。
1. 在 Composer 中,開啟物件、物範本或其他任何類型的實體,然後開啟「服務」標籤。
2. 按一下「新增」,為功能表列建立新服務。
3. 「服務資訊」下,鍵入服務的名稱,然後按一下「儲存並繼續」
4. 在程式碼編輯器中,使用 MenuEntry 資料形式定義新資料負載。
或者,使用可用程式碼片段:
a. 在左窗格中,展開「片段」,然後在「程式碼片段」下展開 Infotable
b. 選取 Create Infotable from datashape 片段以建立資料負載。對話方塊即會開啟。
c. 在對話方塊中,選取 MenuEntry 資料形式,然後按一下「插入程式碼片段」。程式碼片段即會新增至程式碼編輯器。
5. 使用資料形式為每個資料負載欄位新增包含值的列,來定義選單項目。定義列的語法如下所示:
<infotable_name>.AddRow(<Row_Object>);
6. 完成定義服務之後,按一下「完成」,然後按一下「儲存」來儲存對實體的變更。
* 
按一下「執行」,從資料服務預覽傳回的輸出資料負載。
下表列出 MenuEntry 資料形式的欄位定義。
欄位定義
描述
基礎類型
主索引鍵
linkDestination
設定要連結至的項目類型。您可以將值設定為 URLMashup
STRING
isDefault
在執行時間檢視功能表列時,會自動顯示項目。您只能將一個項目配置為預設。
BOOLEAN
parentMenuId
要指派項目之目標父選單項目的 ID。將此欄位保留空白可將項目顯示為頂層選單。
STRING
imageURL
要作為項目圖示使用之媒體實體的名稱。
IMAGELINK
linkTarget
控制將 linkType 設定為 Hyperlink 時,連結目標的開啟方式。
Popup - 在快顯瀏覽器視窗中開啟連結。
New - 在新瀏覽器標籤中開啟連結。
Replace - 取代目前標籤上的頁面。
空白 - 取代目前視窗。
STRING
description
包含選單項目描述的選用欄位。
STRING
menuId
選單項目的唯一識別元。
STRING
linkType
支援的值有:HyperlinkMashupMenuLogout
* 
ThingWorx 9.3.5 或更新版本支援 Logout
STRING
title
要針對功能表列上的連結項目顯示的文字。
STRING
範例資料服務
下列資料服務顯示如何建立固定與動態選單項目的範例。
在第一個部份中,使用 CreateInfoTableFromDataShape() 方法建立資料負載:
let result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape({
infoTableName: "InfoTable",
dataShapeName: "MenuEntry"
});
資料負載會儲存在名為 result 的變數中。接著,使用 MenuEntry 資料形式定義頂層選單項目。您可以使用 AddRows() 資料負載方法,將資料欄位值作為 JSON 物件傳遞。下一部份定義多個靜態選單項目。
result.AddRow({
menuId: 'topMenu',
linkType: 'Menu',
});
result.AddRow({
linkDestination: 'OverviewMashup',
isDefault: true,
parentMenuId: 'topMenu',
imageURL: 'Dashboard',
linkTarget: 'Mashup', // (Popup, Mashup, New)
description: '',
menuId: 'idOverview',
linkType: 'Mashup',
title: 'Overview'
});
result.AddRow({
linkDestination: '',
isDefault: false,
parentMenuId: 'topMenu',
imageURL: 'TableView',
linkTarget: '', // (Popup, Mashup, New)
description: '',
menuId: 'idLogs',
linkType: 'Menu',
title: 'Logs'
});
result.AddRow({
linkDestination: 'AllSitesMashup',
isDefault: false,
parentMenuId: 'idLogs',
imageURL: 'SiteIcon',
linkTarget: 'Mashup', // (Popup, Mashup, New)
description: '',
menuId: 'idAllSites',
linkType: 'Mashup',
title: 'All Sites'
});
result.AddRow({
linkDestination: 'Site1Mashup',
isDefault: false,
parentMenuId: 'idLogs',
imageURL: 'SiteIcon',
linkTarget: 'Mashup', // (Popup, Mashup, New)
description: '',
menuId: 'idSite1',
linkType: 'Mashup',
title: 'Site 1'
});
result.AddRow({
linkDestination: 'Site2Mashup',
isDefault: false,
parentMenuId: 'idLogs',
imageURL: 'SiteIcon',
linkTarget: 'Mashup', // (Popup, Mashup, New)
description: '',
menuId: 'idSite2',
linkType: 'Mashup',
title: 'Site 2'
});
result.AddRow({
linkDestination: 'Site3Mashup',
isDefault: false,
parentMenuId: 'idLogs',
imageURL: 'SiteIcon',
linkTarget: 'Mashup', // (Popup, Mashup, New)
description: '',
menuId: 'idSite3',
linkType: 'Mashup',
title: 'Site 3'
});
result.AddRow({
linkDestination: '',
isDefault: false,
parentMenuId: 'topMenu',
imageURL: 'DevicesIcon',
linkTarget: '', // (Popup, Mashup, New)
description: '',
menuId: 'idDevices',
linkType: 'Menu',
title: 'Devices'
});
result.AddRow({
linkDestination: 'SearchMashup',
isDefault: false,
parentMenuId: 'topMenu',
imageURL: 'Search',
linkTarget: 'Mashup', // (Popup, Mashup, New)
description: '',
menuId: 'idSearch',
linkType: 'Mashup',
title: 'Search'
});
您也可以使用資料動態產生選單項目。下列程式碼片段可用來針對使用通用物範本定義的物件產生選單項目。項目會連結至與每個物件相關聯的主混搭,且會顯示在名為 Devices 的選單下。
使用 GetImplementingThings() 方法來擷取 DevicesTemplate 物範本所定義之物件的清單。您可以將資料負載結果儲存在變數中。
let thingsList = ThingTemplates["DevicesTemplate"].GetImplementingThings();
* 
傳回的資料負載使用 RootEntityList 資料形式實行。
欲針對每個物件產生選單項目,請將傳回的資料負載轉換為陣列,然後在每個項目之間循環:
thingsList.rows.toArray().forEach(row => {
result.AddRow({
linkDestination: row.homeMashup,
isDefault: false,
parentMenuId: 'idDevices',
imageURL: 'DeviceIcon',
linkTarget: 'Mashup', // (Popup, Mashup, New)
description: '',
menuId: 'id' + row.name,
linkType: 'Mashup',
title: row.name
});
});
您可以將 JSON 物件中的每個物件內容值傳遞為變數。下圖顯示執行資料服務後的資料負載輸出:
資料負載包含 14 個項目,包括頂層選單項目與五個項目,這些項目透過在 GetImplementingThings() 方法的結果之間循環動態產生。下圖顯示在執行時間「功能表列」小器具上的選單項目。
項目會分組並顯示在 Devices 下。按一下連結時,目前物件的對應主混搭會開啟。
這是否有幫助?