Đăng ký¶
Các sổ đăng ký là bản đồ khóa/giá trị (được sắp xếp). Chúng là các điểm mở rộng ứng dụng khách web chính: nhiều tính năng được cung cấp bởi khung javascript của SoOn chỉ cần tra cứu sổ đăng ký bất cứ khi nào nó cần định nghĩa cho một số đối tượng (chẳng hạn như trường, chế độ xem, hành động hoặc dịch vụ của khách hàng). Việc tùy chỉnh máy khách web sau đó được thực hiện đơn giản bằng cách thêm các giá trị cụ thể vào sổ đăng ký chính xác.
import { Registry } from "@web/core/registry";
const myRegistry = new Registry();
myRegistry.add("hello", "odoo");
console.log(myRegistry.get("hello"));
Một tính năng hữu ích của các cơ quan đăng ký là chúng duy trì một tập hợp các cơ quan đăng ký phụ, thu được bằng phương pháp category
. Nếu sổ đăng ký phụ chưa tồn tại, nó sẽ được tạo nhanh chóng. Tất cả các sổ đăng ký được máy khách web sử dụng đều được lấy theo cách như vậy từ một sổ đăng ký gốc, được xuất dưới dạng @web/core/registry
.
import { registry } from "@web/core/registry";
const fieldRegistry = registry.category("fields");
const serviceRegistry = registry.category("services");
const viewRegistry = registry.category("views");
API đăng ký¶
- class Registry()¶
Tạo một sổ đăng ký mới. Lưu ý rằng sổ đăng ký là một bus sự kiện, vì vậy người ta có thể nghe sự kiện
UPDATE
nếu cần. Các sổ đăng ký được sắp xếp theo thứ tự: phương thứcgetAll
trả về danh sách các giá trị được sắp xếp theo số thứ tự của chúng.- Registry.add(key, value[, options])¶
- Đối số
key (
string()
) -- chìa khóa cho mục mớivalue (
any()
) -- giá trị cho mục mớioptions (
Object()
) -- tùy chọn[options.force] (
boolean()
) -- đừng ném nếu chìa khóa đã tồn tại[options.sequence] (
number()
) -- số thứ tự (hữu ích cho các mục đặt hàng)
- Trả về
Đăng ký
Chèn một giá trị vào một khóa cụ thể. Nếu khóa đã được sử dụng, phương thức này sẽ báo lỗi (trừ khi tùy chọn
force
được đặt thành true). Tùy chọntrình tự
rất hữu ích để chèn giá trị vào một vị trí cụ thể. Phương thức này cũng kích hoạt sự kiệnUPDATE
.Trả về cùng một sổ đăng ký, vì vậy lệnh gọi phương thức
add
có thể được nối tiếp.
- Registry.get(key[, defaultValue])¶
- Đối số
key (
string()
) -- chìa khóa cho mục nhậpany (
defaultValue()
) -- giá trị trả về nếu không có mục nào cho khóa tồn tại
Trả về giá trị tương ứng với đối số
key
. Nếu sổ đăng ký không chứa khóa đó, phương thức này sẽ trả vềdefaultValue
nếu được cung cấp hoặc nếu không sẽ đưa ra lỗi.
- Registry.contains(key)¶
- Đối số
key (
string()
) -- chìa khóa cho mục nhập
- Trả về
boolean
Trả về
true
nếukey
có trong sổ đăng ký
- Registry.getAll()¶
- Trả về
bất kì[]
Trả về danh sách tất cả các thành phần trong sổ đăng ký. Nó được sắp xếp theo số thứ tự.
- Registry.remove(key)¶
- Đối số
key (
string()
) -- chìa khóa cho mục cần được loại bỏ
Xóa cặp khóa/giá trị khỏi sổ đăng ký. Thao tác này kích hoạt sự kiện
UPDATE
.
- Registry.category(subcategory)¶
- Đối số
subcategory (
string()
) -- tên cho danh mục phụ
- Trả về
Đăng ký
Trả về sổ đăng ký phụ được liên kết với
danh mục con
. Nếu nó chưa tồn tại, sổ đăng ký phụ sẽ được tạo nhanh chóng.
Danh sách tham khảo¶
Loại |
Nội dung |
---|---|
effect |
thực hiện cho tất cả các hiệu ứng có sẵn |
các hàm tiện ích để định dạng giá trị (chủ yếu được sử dụng cho các giá trị trường) |
|
main_comComponents |
thành phần cấp cao nhất |
các hàm tiện ích để phân tích các giá trị (chủ yếu được sử dụng cho các giá trị trường) |
|
tất cả các dịch vụ cần được kích hoạt |
|
các thành phần được hiển thị trong vùng systray trên thanh điều hướng |
|
các mục menu được hiển thị trong menu người dùng (trên cùng bên phải của thanh điều hướng) |
Đăng ký hiệu lực¶
Sổ đăng ký hiệu ứng
chứa việc triển khai tất cả các hiệu ứng có sẵn. Xem phần trên effect service để biết thêm chi tiết.
Sổ đăng ký định dạng¶
Sổ đăng ký formatters
chứa các chức năng định dạng các giá trị. Mỗi trình định dạng có API sau:
- format(value[, options])¶
- Đối số
value (
T | false()
) -- một giá trị của một loại cụ thể hoặcfalse
nếu không có giá trị nào được đưa raoptions (
Object()
) -- Các tùy chọn khác nhau
- Trả về
sợi dây
Định dạng một giá trị và trả về một chuỗi
Xem thêm
Đăng ký thành phần chính¶
Sổ đăng ký thành phần chính (main_comComponents
) rất hữu ích để thêm các thành phần cấp cao nhất vào máy khách web. Máy khách web có MainComponentsContainer
là con trực tiếp. Thành phần này về cơ bản là sự thể hiện trực tiếp danh sách các thành phần được sắp xếp theo thứ tự được đăng ký trong sổ đăng ký thành phần chính.
- API
interface { Component: Owl Component class props?: any }
Ví dụ: thành phần LoadingIndicator
có thể được thêm vào sổ đăng ký như thế này:
registry.category("main_components").add("LoadingIndicator", {
Component: LoadingIndicator,
});
Đăng ký phân tích cú pháp¶
Sổ đăng ký trình phân tích cú pháp
chứa các hàm phân tích các giá trị. Mỗi trình phân tích cú pháp có API sau:
- parse(value[, options])
- Đối số
value (
string()
) -- một chuỗi đại diện cho một giá trịoptions (
Object()
) -- các tùy chọn khác nhau (cụ thể của trình phân tích cú pháp)
- Trả về
T một giá trị hợp lệ
Phân tích một chuỗi và trả về một giá trị. Nếu chuỗi không biểu thị giá trị hợp lệ, trình phân tích cú pháp có thể bị lỗi và đưa ra lỗi.
Xem thêm
Đăng ký dịch vụ¶
Sổ đăng ký dịch vụ (danh mục: services
) chứa tất cả services cần được kích hoạt bởi khung SoOn.
import { registry } from "@web/core/registry";
const myService = {
dependencies: [...],
start(env, deps) {
// some code here
}
};
registry.category("services").add("myService", myService);
Sổ đăng ký hệ thống¶
Systray là vùng bên phải thanh điều hướng chứa nhiều thành phần nhỏ khác nhau, thường hiển thị một số loại thông tin (như số lượng tin nhắn chưa đọc), thông báo và/hoặc cho phép người dùng tương tác với chúng.
Sổ đăng ký systray
chứa mô tả về các mục systray này, dưới dạng các đối tượng có ba khóa sau:
Thành phần
: lớp thành phần đại diện cho mục. Phần tử gốc của nó phải là thẻ<li>
, nếu không nó có thể không được tạo kiểu đúng cách.props (tùy chọn)
: props cần được cung cấp cho thành phầnisDisplayed (tùy chọn)
: một hàm nhận env và trả về một boolean. Nếu đúng, mục systray sẽ được hiển thị. Nếu không nó sẽ bị loại bỏ.
Ví dụ:
import { registry } from "@web/core/registry";
class MySystrayItem extends Component {
// some component ...
}
registry.category("systray").add("myAddon.myItem", {
Component: MySystrayItem,
});
Sổ đăng ký systray là sổ đăng ký theo thứ tự (có số trình tự
):
const item = {
Component: MySystrayItem
};
registry.category("systray").add("myaddon.some_description", item, { sequence: 43 });
Số thứ tự mặc định là 50. Nếu được cung cấp, số này sẽ được sử dụng để sắp xếp các mặt hàng. Trình tự thấp nhất nằm ở bên phải và trình tự cao nhất nằm ở bên trái trong menu hệ thống.