資料層

公開課程 DataLayer

資料層是一套地圖,其中含有應用程式的相關一般資訊。 它使用一組標準鍵,因此任何一方都能讀取 瞭解相關規範資料層狀態會透過其 API 更新。 舉例來說,應用程式一開始可能會使用下列 dataLayer:

   {
     title: "Original screen title"
   }
敬上 因為應用程式的狀態/資料可能會改變,應用程式可以透過呼叫更新 dataLayer,例如:
   dataLayer.push(DataLayer.mapOf("title", "New screen title"));
敬上 資料層現在包含:
   {
     title: "New screen title"
   }
敬上 再次推送後:
 dataLayer.push(DataLayer.mapOf("xyz", 3));
敬上 dataLayer 包含:
   {
     "title": "New screen title",
     "xyz": 3
   }
敬上 下例示範陣列和地圖合併的運作方式。如果原始檔案 dataLayer 包含:
   {
     "items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}]
   }
敬上 推送後:
 dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT,
     DataLayer.mapOf("a", null)));
敬上 dataLayer 包含:
   {
     "items": [null, "item6", "item2", {"a": null, "b": "bValue"}]
   }

同步進行;之後,變更就會反映在模型中

event 鍵推送至資料層時,系統會評估代碼的規則, 與此事件相符的代碼時,就會觸發。 舉例來說,假設容器中的代碼觸發規則是「事件」等於 「openScreen」:

 dataLayer.push("event", "openScreen");
敬上 該代碼就會觸發

欄位摘要

公開 靜態 最終 物品 OBJECT_NOT_PRESENT 在 List 中使用這種型別的值,會導致清單在合併時出現稀疏;這就好像 該索引沒有任何元素。

公用方法摘要

對象
get(字串)
靜態 清單<物件>
listOf(物件... 物件)
靜態 Map<物件、物件>
mapOf(物件... 物件)
void
push(Map<Object, Object> 更新)
void
push(物件物件)

欄位

公開 靜態 最終 物品 OBJECT_NOT_PRESENT

在 List 中使用這種型別的值,會導致清單在合併時出現稀疏;這就好像 該索引沒有任何元素。

公用方法

公開 物品 取得 (字串 )

傳回與指定鍵相關聯的模型中的物件。如果找不到金鑰 傳回 null

鍵可以包含內嵌句點。例如: "a.b.c" 鍵會傳回對應中鍵為 "c" 的對應 模型包含索引鍵 "b",模型中的索引鍵為 "a"

公開 靜態 清單<物件> listOf (物件... 物件)

用於建立清單的公用程式方法。

舉例來說,下列指令會建立包含 "object1""object2":

   List<Object> list = DataLayer.listOf("object1", "object2");
 

公開 靜態 Map<物件、物件> mapOf (物件... 物件)

建立地圖的公用程式方法。參數應該是鍵的一對 輕鬆分配獎金

舉例來說,下列指令會建立 "key1""value1" 的地圖 和 "key2""value2"

   Map<Object, Object> map = DataLayer.mapOf("key1", "value1", "key2", "value2");
 

擲回
IllegalArgumentException 表示參數數量異常

公開 void 推送 (Map<Object, Object> 更新)

將指定的 update 物件合併至現有資料模型,呼叫 有更新的監聽器 (合併發生後)。

如要表示遺漏值 (例如清單中的空白索引), 使用 OBJECT_NOT_PRESENT 物件。

如果另一個執行緒正在執行推送作業,此呼叫會封鎖,直到該執行緒 已完成。

這通常為同步呼叫。但如果執行緒正在執行中 推送時,另一個推送作業是來自相同執行緒,第二次推送則屬於非同步性質 (對資料層進行任何變更前,第二次推送就會傳回)。這第二個 就可能發生從相同執行緒推送的情況,比如在回應中推送資料層時 傳送給代碼觸發的結果

如果 update 包含 event 鍵,系統會評估規則並 相符的代碼就會觸發

參數
update 要處理的更新物件

公開 void 推送 (物件物件)

將鍵/值組合推送至資料層。這只是方便 呼叫 push(DataLayer.mapOf(key, value))