เอกสารนี้แปลโดย AI สำหรับข้อมูลที่ถูกต้อง กรุณาดูเวอร์ชันภาษาอังกฤษ
คอลัมน์ JS ใช้สำหรับ "คอลัมน์ที่กำหนดเอง" ในตาราง โดยจะเรนเดอร์เนื้อหาของแต่ละเซลล์ในแต่ละแถวด้วย JavaScript ครับ/ค่ะ ไม่ผูกกับฟิลด์ใดฟิลด์หนึ่งโดยเฉพาะ เหมาะสำหรับสถานการณ์ต่างๆ เช่น คอลัมน์ที่ดัดแปลงมาจากข้อมูลอื่น (derived columns), การแสดงผลแบบรวมหลายฟิลด์, ป้ายสถานะ (status badges), ปุ่มดำเนินการ, และการสรุปข้อมูลจากแหล่งข้อมูลระยะไกล

เมื่อเรนเดอร์แต่ละเซลล์ JS Column จะมี API สำหรับบริบท (Context API) ดังต่อไปนี้ให้ใช้งาน:
ctx.element: คอนเทนเนอร์ DOM ของเซลล์ปัจจุบัน (ElementProxy) ซึ่งรองรับ innerHTML, querySelector, addEventListener และอื่นๆ ครับ/ค่ะctx.record: ออบเจกต์บันทึกข้อมูลของแถวปัจจุบัน (อ่านอย่างเดียว) ครับ/ค่ะctx.recordIndex: ดัชนีของแถวภายในหน้าปัจจุบัน (เริ่มต้นจาก 0 และอาจได้รับผลกระทบจากการแบ่งหน้า) ครับ/ค่ะctx.collection: เมตาอินฟอร์เมชันของ Collection ที่ผูกกับตาราง (อ่านอย่างเดียว)ctx.requireAsync(url): โหลดไลบรารี AMD/UMD แบบอะซิงโครนัสตาม URL ครับ/ค่ะctx.importAsync(url): อิมพอร์ตโมดูล ESM แบบไดนามิกตาม URL ครับ/ค่ะctx.openView(options): เปิดวิว (View) ที่กำหนดค่าไว้ (เช่น ป๊อปอัป/ลิ้นชัก/หน้า) ครับ/ค่ะctx.i18n.t() / ctx.t(): สำหรับการทำ Internationalization (การรองรับหลายภาษา) ครับ/ค่ะctx.onRefReady(ctx.ref, cb): เรนเดอร์หลังจากคอนเทนเนอร์พร้อมใช้งานครับ/ค่ะctx.libs.React / ctx.libs.ReactDOM / ctx.libs.antd / ctx.libs.antdIcons / ctx.libs.dayjs / ctx.libs.lodash / ctx.libs.math / ctx.libs.formula: ไลบรารีทั่วไปที่มาพร้อมกับระบบ เช่น React, ReactDOM, Ant Design, ไอคอน Ant Design, dayjs, lodash, math.js และ formula.js สำหรับการเรนเดอร์ JSX, การจัดการเวลา, การจัดการข้อมูล และการคำนวณทางคณิตศาสตร์ (ส่วน ctx.React / ctx.ReactDOM / ctx.antd ยังคงมีไว้เพื่อความเข้ากันได้)ctx.render(vnode): เรนเดอร์ React element/HTML/DOM ไปยังคอนเทนเนอร์เริ่มต้น ctx.element (เซลล์ปัจจุบัน) ครับ/ค่ะ การเรนเดอร์หลายครั้งจะใช้ Root เดิมซ้ำ และจะเขียนทับเนื้อหาที่มีอยู่ในคอนเทนเนอร์ครับ/ค่ะตัวแก้ไขสคริปต์สำหรับคอลัมน์ JS รองรับการเน้นไวยากรณ์ (syntax highlighting), การแจ้งเตือนข้อผิดพลาด และมีโค้ดสนิปเปต (Snippets) ในตัวครับ/ค่ะ
Snippets: เปิดรายการโค้ดสนิปเปตในตัว คุณสามารถค้นหาและแทรกโค้ดเหล่านั้นไปยังตำแหน่งเคอร์เซอร์ปัจจุบันได้ด้วยคลิกเดียวครับ/ค่ะRun: รันโค้ดปัจจุบันได้โดยตรงครับ/ค่ะ บันทึกการทำงานจะแสดงในแผง Logs ด้านล่าง ซึ่งรองรับ console.log/info/warn/error และการเน้นข้อผิดพลาดเพื่อระบุตำแหน่งครับ/ค่ะ
คุณยังสามารถใช้ AI Employee เพื่อช่วยสร้างโค้ดได้ด้วยครับ/ค่ะ:
if (!lib) return;)class หรือ [name=...] เป็นหลัก และหลีกเลี่ยงการใช้ id แบบตายตัว เพื่อป้องกัน id ซ้ำกันในหลายบล็อกหรือป๊อปอัปครับ/ค่ะ