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