Lớp dữ liệu là bản đồ chứa thông tin chung về ứng dụng. Hàm này sử dụng một bộ khoá tiêu chuẩn để bất kỳ bên nào hiểu được quy cách cũng có thể đọc được. Trạng thái lớp dữ liệu được cập nhật thông qua API. Ví dụ: ứng dụng có thể bắt đầu bằng dataLayer sau:
{ title: "Original screen title" }Khi trạng thái/dữ liệu của một ứng dụng có thể thay đổi nên ứng dụng có thể cập nhật dataLayer bằng một lệnh gọi như:
dataLayer.push(DataLayer.mapOf("title", "New screen title"));Giờ đây, lớp dữ liệu chứa:
{ title: "New screen title" }Sau khi một lượt đẩy khác diễn ra:
dataLayer.push(DataLayer.mapOf("xyz", 3));Lớp dữ liệu chứa:
{ "title": "New screen title", "xyz": 3 }Ví dụ sau minh hoạ cách hoạt động của việc hợp nhất mảng và bản đồ. Nếu dataLayer gốc có chứa:
{ "items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}] }Sau khi đẩy dữ liệu này ra:
dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT, DataLayer.mapOf("a", null)));dataLayer chứa:
{ "items": [null, "item6", "item2", {"a": null, "b": "bValue"}] }
Quá trình đẩy diễn ra một cách đồng bộ; sau khi đẩy, các thay đổi đã được phản ánh trong mô hình.
Khi khoá event
được đẩy đến lớp dữ liệu, các quy tắc cho thẻ sẽ được đánh giá và mọi thẻ khớp với sự kiện này sẽ kích hoạt.
Ví dụ: với một vùng chứa có thẻ có quy tắc kích hoạt là "event" bằng "openScreen", sau khi đẩy:
dataLayer.push("event", "openScreen");thẻ đó sẽ kích hoạt.
Tóm tắt về trường
Đối tượng công khai tĩnh cuối cùng | OBJECT_NOT_PRESENT | Các giá trị thuộc loại này được dùng trong Danh sách khiến Danh sách trở nên thưa thớt khi hợp nhất; như thể không có phần tử nào ở chỉ mục đó. |
Tóm tắt phương thức công khai
Đối tượng |
get(Khoá chuỗi)
|
Tĩnh Danh sách<Object> |
listOf(Đối tượng... đối tượng)
|
tĩnh Bản đồ<Đối tượng, Đối tượng> |
mapOf(Đối tượng... đối tượng)
|
void |
push(Map<Object, Object> cập nhật)
|
void |
Các trường
công khai tĩnh cuối cùng Đối tượng OBJECT_NOT_PRESENT
Các giá trị thuộc loại này được dùng trong Danh sách khiến Danh sách trở nên thưa thớt khi hợp nhất; như thể không có phần tử nào ở chỉ mục đó.
Phương thức công khai
công khai Đối tượng get (Chuỗi khoá)
Trả về đối tượng trong mô hình được liên kết với khoá đã cho. Nếu không tìm thấy khoá, null
sẽ được trả về.
Khoá có thể có các dấu chấm được nhúng. Ví dụ: khoá của "a.b.c"
sẽ trả về một tệp ánh xạ có khoá "c"
trong bản đồ có khoá "b"
trong bản đồ có khoá "a"
trong mô hình.
công khai tĩnh Danh sách<Object> listOf (Đối tượng... đối tượng)
Phương thức Utility để tạo danh sách.
Ví dụ: nội dung sau đây sẽ tạo một danh sách chứa "object1"
và "object2"
:
List<Object> list = DataLayer.listOf("object1", "object2");
công khai tĩnh Bản đồ<Object, Object> mapOf (Đối tượng... đối tượng)
Phương thức tiện ích tạo bản đồ. Thông số phải là các cặp khoá-giá trị.
Ví dụ: nội dung sau đây sẽ tạo bản đồ ánh xạ "key1"
với "value1"
và "key2"
đến "value2"
:
Map<Object, Object> map = DataLayer.mapOf("key1", "value1", "key2", "value2");
Gửi
IllegalArgumentException | nếu có số lượng tham số lẻ |
công khai void push (Map<Object, Object> update)
Hợp nhất đối tượng update
đã cho vào mô hình dữ liệu hiện có, gọi mọi trình nghe cùng với nội dung cập nhật (sau khi quá trình hợp nhất xảy ra).
Nếu bạn muốn biểu thị một giá trị còn thiếu (chẳng hạn như một chỉ mục trống trong Danh sách), hãy sử dụng đối tượng OBJECT_NOT_PRESENT
.
Nếu một luồng khác đang thực thi lệnh đẩy, thì lệnh gọi này sẽ chặn cho đến khi luồng đó kết thúc.
Đây thường là lệnh gọi đồng bộ. Tuy nhiên, nếu trong khi luồng đang thực thi lệnh đẩy, một lượt đẩy khác diễn ra từ cùng một luồng, thì lệnh đẩy thứ hai đó không đồng bộ (lượt đẩy thứ hai sẽ trả về trước khi có thay đổi đối với lớp dữ liệu). Việc đẩy thứ hai này từ cùng một luồng có thể xảy ra, chẳng hạn như nếu thao tác đẩy lớp dữ liệu được thực hiện để phản hồi một thẻ kích hoạt.
Nếu update
chứa khoá event
, thì các quy tắc sẽ được đánh giá và các thẻ phù hợp sẽ kích hoạt.
Các tham số
cập nhật | đối tượng cập nhật để xử lý |
công khai khoảng trống push (Khoá đối tượng, Giá trị giá trị đối tượng)
Đẩy một cặp dữ liệu khoá/giá trị vào lớp dữ liệu. Đây chỉ là một phương thức tiện lợi để gọi push(DataLayer.mapOf(key, value))
.