Ekstensi Block
Di NocoBase, Block adalah area konten di halaman — seperti tabel, form, chart, detail, dll. Dengan extends class dasar series BlockModel, Anda dapat membuat Block kustom dan mendaftarkannya ke menu "Tambah Block".
Pemilihan Class Dasar
NocoBase menyediakan tiga class dasar Block, pilih berdasarkan kebutuhan data Anda:
Rantai inheritance: BlockModel → DataBlockModel → CollectionBlockModel → TableBlockModel.
Biasanya, jika Anda menginginkan Block tabel siap pakai, langsung gunakan TableBlockModel — ini dilengkapi kemampuan lengkap seperti kolom field, action bar, pagination, sorting, dll., adalah class dasar yang paling banyak digunakan. Jika Anda perlu rendering yang sepenuhnya kustom (seperti list card, timeline, dll.), gunakan CollectionBlockModel dan tulis sendiri renderComponent. Jika hanya untuk menampilkan konten statis atau UI kustom, BlockModel sudah cukup.
Posisi DataBlockModel agak khusus — ini sendiri tidak menambahkan property atau method baru, body class kosong. Tujuannya adalah identifier kategorisasi: Block yang inherits DataBlockModel akan dikelompokkan ke grup menu "Block Data" di UI. Jika Block Anda perlu mengelola sendiri logika pengambilan data (tidak mengikuti binding Collection standar NocoBase), dapat inherits DataBlockModel. Misalnya ChartBlockModel plugin chart — ini menggunakan ChartResource kustom untuk mengambil data, tidak memerlukan binding tabel data standar. Sebagian besar skenario Anda tidak perlu langsung menggunakan DataBlockModel, gunakan CollectionBlockModel atau TableBlockModel sudah cukup.
Contoh BlockModel
Block paling sederhana — mendukung edit konten HTML:
Contoh ini mencakup tiga langkah pengembangan Block:
renderComponent()— Merender UI Block, membaca property melaluithis.propsdefine()— Mengatur nama tampilan Block di menu "Tambah Block"registerFlow()— Menambahkan panel konfigurasi visual, pengguna dapat mengedit konten HTML di antarmuka
Contoh CollectionBlockModel
Jika Block perlu mengikat tabel data NocoBase, gunakan CollectionBlockModel. Ini akan otomatis menangani pengambilan data:
Dibandingkan dengan BlockModel, CollectionBlockModel memiliki tambahan ini:
static scene— Mendeklarasikan skenario Block. Nilai umum:BlockSceneEnum.many(list multi record),BlockSceneEnum.one(detail/form record tunggal). Enum lengkap juga termasuknew,select,filter,subForm,bulkEditForm, dll.createResource()— Membuat data resource,MultiRecordResourcedigunakan untuk mengambil multi recordthis.resource.getData()— Mengambil data tabel data
Contoh TableBlockModel
TableBlockModel inherits dari CollectionBlockModel, adalah Block tabel lengkap bawaan NocoBase — dilengkapi kapabilitas seperti kolom field, action bar, pagination, sorting, dll. Saat pengguna memilih "Table" di "Tambah Block" inilah yang digunakan.
Biasanya, jika TableBlockModel bawaan sudah memenuhi kebutuhan, pengguna langsung menambahkan di antarmuka, developer tidak perlu melakukan apa pun. Hanya saat Anda perlu melakukan kustomisasi berbasis TableBlockModel, baru perlu inherits — seperti:
- Override
customModelClassesuntuk mengganti grup operasi atau model kolom field bawaan - Membatasi hanya tersedia untuk tabel data tertentu melalui
filterCollection - Mendaftarkan Flow tambahan untuk menambah item konfigurasi kustom
Untuk contoh kustomisasi TableBlockModel lengkap lihat Membuat Plugin Manajemen Data Front-Back End.
Mendaftarkan Block
Daftarkan di load() Plugin:
Setelah registrasi selesai, klik "Tambah Block" di antarmuka NocoBase akan terlihat Block kustom Anda.
Source Code Lengkap
- @nocobase-example/plugin-simple-block — Contoh BlockModel
- @nocobase-example/plugin-collection-block — Contoh CollectionBlockModel
Tautan Terkait
- Praktik Plugin: Membuat Block Tampilan Kustom — Membangun Block BlockModel yang dapat dikonfigurasi dari nol
- Praktik Plugin: Membuat Plugin Manajemen Data Front-Back End — Contoh lengkap TableBlockModel + Field kustom + Action kustom
- Ikhtisar FlowEngine — Penggunaan dasar FlowModel dan registerFlow
- Ekstensi Field — Component Field kustom
- Ekstensi Action — Tombol Action kustom
- Cheatsheet Resource API — Method signature lengkap MultiRecordResource / SingleRecordResource
- Definisi FlowDefinition — Parameter lengkap dan tipe event registerFlow
- Dokumentasi Lengkap FlowEngine — Referensi lengkap

