Để mở rộng một trường hiện có, bạn phải thêm lớp con cho một trường có sẵn (ví dụ:
FieldTextInput
, FieldColour
) rồi sửa đổi một phần cho phù hợp với nhu cầu của bạn.
Một số phần của trường mà bạn có thể sửa đổi là:
- editor (trình chỉnh sửa).
- hiển thị trên khối.
- Chiến lược phát hành đĩa đơn văn bản mà nó sẽ hiển thị.
Nếu bạn muốn tạo một
trường tuỳ chỉnh
không cần hành vi từ bất kỳ trường tích hợp nào, bạn nên tạo lớp con Field
.
Tiện ích phổ biến
Hầu hết các trường tuỳ chỉnh đều mở rộng một trong 3 loại sau:
- Nhập văn bản: Nếu muốn người dùng nhập vào trường của mình, bạn nên mở rộng
FieldTextInput
. - Số: Nếu muốn lưu trữ một số, bạn nên mở rộng
FieldNumber
. - Trình đơn thả xuống: Nếu bạn muốn tạo một trình đơn thả xuống nhưng lại muốn trình đơn này lưu trữ một mô hình khác
chuỗi hoặc mô hình hình ảnh mặc định, bạn nên mở rộng
FieldDropdown
.- Thận trọng: Trước khi mở rộng
FieldDropdown
, hãy kiểm tra xem trường thả xuống của các tuỳ chọn tuỳ chỉnh không thể đáp ứng nhu cầu của bạn.
- Thận trọng: Trước khi mở rộng
Trong một số trường hợp nhất định, bạn có thể muốn mở rộng một loại trường khác. Cho
ví dụ: FieldLabelSerializable
mở rộng FieldLabel
.
Phân loại con
import * as Blockly from 'blockly';
export class MyCustomTextField extends Blockly.FieldTextInput {
constructor(value, validator, config) {
super(value, validator, config);
}
}
Hàm khởi tạo cho lớp con của một trường trông rất giống với hàm khởi tạo cho trường tuỳ chỉnh. Chữ ký của hàm khởi tạo phụ phải thường khớp với chữ ký của hàm khởi tạo mẹ.
JSON và việc đăng ký
Bạn cũng nên đăng ký trường này một lần:
Blockly.fieldRegistry.register('my_custom_text_field', MyCustomTextField);
và triển khai fromJson
trong lớp này để hoạt động với
định dạng JSON:
static fromJson(options) {
const value = Blockly.utils.parsing.replaceMessageReferences(options.value);
return new MySubclassName(value);
}
Để biết thêm thông tin về cách đăng ký một trường, hãy xem JSON và đăng ký trong Tạo trường tùy chỉnh.