Untuk memperluas kolom yang ada, Anda harus membuat subclass untuk kolom bawaan (misalnya FieldTextInput
, FieldColour
), lalu mengubah sebagian kolom tersebut sesuai dengan kebutuhan Anda.
Beberapa bagian kolom yang dapat Anda ubah adalah:
- Ini editor.
- Tampilannya yang diblokir.
- Teks yang ditampilkan.
Jika ingin membuat
kolom kustom
yang tidak memerlukan perilaku dari kolom bawaan apa pun, Anda harus membuat subclass Field
.
Ekstensi umum
Sebagian besar kolom kustom memperluas salah satu dari tiga jenis berikut:
- Input Teks: Jika ingin pengguna mengetik ke dalam kolom, Anda harus memperluas
FieldTextInput
. - Nomor: Jika ingin menyimpan angka, Anda harus memperluas
FieldNumber
. - Dropdown: Jika ingin membuat dropdown, tetapi ingin menyimpan model yang berbeda
dengan string atau model gambar default, Anda harus memperluas
FieldDropdown
.- Perhatian: Sebelum memperluas
FieldDropdown
, pastikan opsi penyesuaian kolom drop-down tidak dapat memenuhi kebutuhan Anda.
- Perhatian: Sebelum memperluas
Dalam keadaan tertentu, Anda mungkin ingin memperluas jenis kolom yang berbeda. Misalnya,
FieldLabelSerializable
memperluas FieldLabel
.
Subclassing
import * as Blockly from 'blockly';
export class MyCustomTextField extends Blockly.FieldTextInput {
constructor(value, validator, config) {
super(value, validator, config);
}
}
Konstruktor untuk subclass kolom terlihat sangat mirip dengan konstruktor untuk kolom kustom. Tanda tangan sub-konstruktor umumnya harus cocok dengan tanda tangan konstruktor super.
JSON dan pendaftaran
Anda juga harus mendaftarkan kolom ini sekali:
Blockly.fieldRegistry.register('my_custom_text_field', MyCustomTextField);
dan menyediakan implementasi fromJson
di class tersebut agar berfungsi dengan
format JSON:
static fromJson(options) {
const value = Blockly.utils.parsing.replaceMessageReferences(options.value);
return new MySubclassName(value);
}
Untuk mengetahui informasi selengkapnya tentang pendaftaran kolom, lihat bagian JSON dan pendaftaran di Membuat Kolom Kustom.