Mở rộng trường hiện có

Để mở rộng một trường hiện có, bạn phải tạo lớp con cho một trường tích hợp (ví dụ: FieldTextInput, FieldColour), rồi sửa đổi một phần trường đó cho phù hợp với nhu cầu của mình. Một số phần của trường bạn có thể sửa đổi là:

Nếu 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.

Các tiện ích phổ biến

Hầu hết các trường tùy chỉnh mở rộng một trong ba 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 muốn tạo một trình đơn thả xuống nhưng muốn lưu trữ một mô hình khác với mô hình chuỗi hoặc 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 để đảm bảo rằng các tuỳ chọn tuỳ chỉnh của trường thả xuống không thể đáp ứng nhu cầu của bạn.

Trong một số trường hợp, bạn có thể mở rộng một loại trường khác. Ví dụ: FieldLabelSerializable mở rộng FieldLabel.

Phân lớp 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 một trường tuỳ chỉnh. Chữ ký của hàm khởi tạo phụ thường phải khớp với chữ ký của hàm khởi tạo cấp cao.

JSON và quy trình đăng ký

Bạn cũng nên đăng ký trường một lần:

Blockly.fieldRegistry.register('my_custom_text_field', MyCustomTextField);

và cung cấp phương thức triển khai fromJson trong lớp để hoạt động đó phù hợp 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 phần JSON và đăng ký trong phần Tạo trường tuỳ chỉnh.