ctx.getVar()
Membaca nilai variabel secara async dari konteks runtime saat ini. Sumber variabel sama dengan resolusi {{ctx.xxx}} di SQL, template, biasanya berasal dari user saat ini, record saat ini, parameter view, konteks popup, dll.
Skenario Penggunaan
Definisi Tipe
Return Value: Promise<any>, perlu menggunakan await untuk mendapatkan nilai yang sudah di-resolve; mengembalikan undefined saat variabel tidak ada.
Jika meneruskan path yang tidak dimulai dengan
ctx., akan melempar error:ctx.getVar(path) expects an expression starting with "ctx.", got: "...".
Path Variabel Umum
ctx.getVarInfos()
Mendapatkan informasi struktur variabel yang dapat di-resolve dalam konteks saat ini (tipe, judul, sub-properti, dll.), untuk eksplorasi path yang tersedia. Return value adalah deskripsi statis berbasis meta, tidak termasuk nilai runtime aktual.
Definisi Tipe
Setiap key di return value adalah path variabel, value adalah informasi struktur yang sesuai dengan path tersebut (berisi type, title, properties, dll.).
Parameter
Contoh
Perbedaan dengan ctx.getValue
Pada JSField, gunakan getValue/setValue untuk membaca/menulis field ini; gunakan getVar untuk mengakses variabel konteks lain (seperti record, user, formValues).
Hal yang Perlu Diperhatikan
- path harus dimulai dengan
ctx.: sepertictx.record.id, jika tidak akan melempar error. - Method async: harus menggunakan
awaituntuk mendapatkan hasil, seperticonst id = await ctx.getVar('ctx.record.id'). - Variabel tidak ada: mengembalikan
undefined, dapat menggunakan??setelah hasil untuk menyetel default value:(await ctx.getVar('ctx.user.nickname')) ?? 'Tamu'. - Nilai form:
ctx.formValuesperlu didapatkan melaluiawait ctx.getVar('ctx.formValues'), tidak diekspos langsung sebagaictx.formValues. Pada konteks form lebih utamakanctx.form.getFieldsValue()untuk membaca nilai terbaru secara real-time.
Contoh
Mendapatkan ID Record Saat Ini
Mendapatkan Record dalam Popup
Membaca Sub-Item Field Array
Menyetel Default Value
Membaca Nilai Field Form
Membaca Parameter Query URL
Eksplorasi Variabel yang Tersedia
Terkait
- ctx.getValue() - Mendapatkan nilai field saat ini secara sinkron (hanya JSField/JSItem, dll.)
- ctx.form - Instance form,
ctx.form.getFieldsValue()dapat membaca nilai form secara real-time - ctx.model - Model dalam konteks eksekusi saat ini
- ctx.blockModel - Parent block tempat JS saat ini berada
- ctx.resource - Instance resource dalam konteks saat ini
{{ctx.xxx}}di SQL / Template - Menggunakan aturan resolusi yang sama denganctx.getVar('ctx.xxx')

