ชั้นข้อมูลคือแผนที่ที่มีข้อมูลทั่วไปเกี่ยวกับแอปพลิเคชัน ใช้ชุดคีย์มาตรฐานเพื่อให้ทุกฝ่ายอ่านได้ ที่เข้าใจข้อกำหนด มีการอัปเดตสถานะของชั้นข้อมูลผ่าน 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 | ค่าประเภทนี้ที่ใช้ในรายการจะทำให้ลิสต์รายการมีขนาดเล็กเมื่อรวม เหมือนกับว่า ไม่มีองค์ประกอบในดัชนีนั้น |
ข้อมูลสรุปของเมธอดสาธารณะ
| ออบเจ็กต์ |
get(คีย์ สตริง)
|
| คงที่ แสดงรายการ<ออบเจ็กต์> |
listOf(ออบเจ็กต์... ออบเจ็กต์)
|
| คงที่ แมป<วัตถุ, วัตถุ> |
mapOf(ออบเจ็กต์... ออบเจ็กต์)
|
| เป็นโมฆะ |
push(Map<Object, Object> อัปเดต)
|
| เป็นโมฆะ |
push(คีย์ออบเจ็กต์ ออบเจ็กต์ value)
|
ช่อง
สาธารณะ คงที่ รอบชิงชนะเลิศ วัตถุ OBJECT_NOT_PRESENT
ค่าประเภทนี้ที่ใช้ในรายการจะทำให้ลิสต์รายการมีขนาดเล็กเมื่อรวม เหมือนกับว่า ไม่มีองค์ประกอบในดัชนีนั้น
วิธีการสาธารณะ
สาธารณะ วัตถุ ดาวน์โหลด (สตริงคีย์)
แสดงผลออบเจ็กต์ในโมเดลที่เชื่อมโยงกับคีย์ที่ระบุ หากไม่พบคีย์
ส่งคืน null แล้ว
คีย์อาจมีจุดแบบฝังได้ ดังตัวอย่างต่อไปนี้
คีย์ "a.b.c" จะแสดงแผนที่ที่มีคีย์ "c" ในแผนที่
ด้วยคีย์ "b" ในแผนที่ ที่มีคีย์ "a" ในโมเดล
สาธารณะ คงที่ แสดงรายการ<ออบเจ็กต์> listOf (ออบเจ็กต์... ออบเจ็กต์)
วิธียูทิลิตีที่สร้างรายการ
ตัวอย่างเช่น ตัวอย่างต่อไปนี้จะสร้างรายการที่มี "object1" และ
"object2":
List<Object> list = DataLayer.listOf("object1", "object2");
สาธารณะ คงที่ แมป<วัตถุ, วัตถุ> mapOf (ออบเจ็กต์... ออบเจ็กต์)
วิธียูทิลิตีที่สร้างแผนที่ พารามิเตอร์ควรเป็นคู่ของคีย์
ตัวอย่างเช่น ตัวอย่างต่อไปนี้จะสร้างการจับคู่แผนที่ "key1" กับ "value1"
และ "key2" ถึง "value2":
Map<Object, Object> map = DataLayer.mapOf("key1", "value1", "key2", "value2");
การขว้าง
| IllegalArgumentException | หากมีพารามิเตอร์จำนวนคี่ |
สาธารณะ เป็นโมฆะ พุช (Map<Object, Object> อัปเดต)
ผสานออบเจ็กต์ update ที่ระบุเข้ากับโมเดลข้อมูลที่มีอยู่ โดยเรียกใช้
ผู้ฟังทั้งหมดที่มีการอัปเดต (หลังจากเกิดการรวม)
หากคุณต้องการแสดงค่าที่ขาดหายไป (เช่น ดัชนีว่างเปล่าในรายการ)
ใช้ออบเจ็กต์ OBJECT_NOT_PRESENT
หากเทรดอื่นกำลังดำเนินการพุช การเรียกนี้จะบล็อกจนกว่าเทรดนั้นจะ เสร็จสิ้นแล้ว
โดยปกติจะเป็นการโทรแบบซิงโครนัส แต่หากขณะที่เทรดทำงานอยู่ การพุชอีกรายการเกิดขึ้นจากชุดข้อความเดียวกัน จากนั้นการพุชครั้งที่ 2 จะเป็นแบบไม่พร้อมกัน (การพุชครั้งที่ 2 จะกลับมาก่อนการเปลี่ยนแปลงชั้นข้อมูล) วินาทีนี้ การพุชจากเธรดเดียวกันสามารถเกิดขึ้นได้ ตัวอย่างเช่น ถ้ามีการพุชชั้นข้อมูลเพื่อตอบสนอง ให้แท็กเริ่มทำงาน
หาก update มีคีย์ event ระบบจะประเมินกฎและ
แท็กที่ตรงกันจะเริ่มทำงาน
พารามิเตอร์
| อัปเดต | ออบเจ็กต์อัปเดตที่จะประมวลผล |
สาธารณะ เป็นโมฆะ พุช (คีย์ออบเจ็กต์, ค่าของออบเจ็กต์)
พุชคู่คีย์/ค่าของข้อมูลไปยังชั้นข้อมูล นี่เป็นเพียงวิธีอำนวยความสะดวก
ที่โทรหา push(DataLayer.mapOf(key, value))