資料層是一套地圖,其中含有應用程式的相關一般資訊。 它使用一組標準鍵,因此任何一方都能讀取 瞭解相關規範資料層狀態會透過其 API 更新。 舉例來說,應用程式一開始可能會使用下列 dataLayer:
{
title: "Original screen title"
}
dataLayer.push(DataLayer.mapOf("title", "New screen title"));
{
title: "New screen title"
}
dataLayer.push(DataLayer.mapOf("xyz", 3));
{
"title": "New screen title",
"xyz": 3
}
{
"items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}]
}
dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT,
DataLayer.mapOf("a", null)));
{
"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 |
欄位
公開 靜態 最終 物品 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))。