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

ctx.element: DOM container (ElementProxy) ของรายการปัจจุบัน รองรับ innerHTML, querySelector, addEventListener และอื่นๆ ครับctx.form: AntD Form instance ที่สามารถใช้ getFieldValue / getFieldsValue / setFieldsValue / validateFields และอื่นๆ ได้ครับctx.blockModel: โมเดลของบล็อกฟอร์มที่ JS Item อยู่ ซึ่งสามารถฟังเหตุการณ์ formValuesChange เพื่อสร้างการทำงานแบบเชื่อมโยง (linkage) ได้ครับctx.record / ctx.collection: เรคคอร์ดปัจจุบันและเมตาดาต้าของ คอลเลกชัน (ใช้ได้ในบางสถานการณ์) ครับctx.requireAsync(url): โหลดไลบรารี AMD/UMD แบบอะซิงโครนัสด้วย URL ครับctx.importAsync(url): อิมพอร์ตโมดูล ESM แบบไดนามิกด้วย URL ครับctx.openView(viewUid, options): เปิดวิว (view) ที่ตั้งค่าไว้ (เช่น ลิ้นชัก (drawer), กล่องโต้ตอบ (dialog), หรือหน้าเพจ) ครับctx.message / ctx.notification: ข้อความแจ้งเตือนและประกาศแบบ Global ครับctx.t() / ctx.i18n.t(): สำหรับการทำ Internationalization ครับctx.onRefReady(ctx.ref, cb): เรนเดอร์หลังจากคอนเทนเนอร์พร้อมใช้งานแล้วครับctx.libs.React / ctx.libs.ReactDOM / ctx.libs.antd / ctx.libs.antdIcons / ctx.libs.dayjs: ไลบรารีทั่วไปที่มาพร้อมกับระบบ เช่น React, ReactDOM, Ant Design, Ant Design icons และ dayjs สำหรับการเรนเดอร์ JSX และการจัดการเวลาครับ (ส่วน ctx.React / ctx.ReactDOM / ctx.antd ยังคงเก็บไว้เพื่อความเข้ากันได้)ctx.render(vnode): เรนเดอร์ React element/HTML/DOM ไปยังคอนเทนเนอร์เริ่มต้น ctx.element ครับ การเรนเดอร์หลายครั้งจะใช้ Root เดิมซ้ำ และเขียนทับเนื้อหาที่มีอยู่ในคอนเทนเนอร์ครับSnippets: เปิดรายการโค้ด Snippets ที่มาพร้อมกับระบบ ซึ่งคุณสามารถค้นหาและแทรกไปยังตำแหน่งเคอร์เซอร์ปัจจุบันได้ด้วยคลิกเดียวครับRun: รันโค้ดปัจจุบันโดยตรง และแสดงผลลัพธ์การทำงานในพาเนล Logs ด้านล่างครับ รองรับ console.log/info/warn/error และการไฮไลต์ตำแหน่งข้อผิดพลาดด้วยครับ
if (!lib) return;)class หรือ [name=...] เป็นหลักครับ และหลีกเลี่ยงการใช้ id แบบตายตัว เพื่อป้องกัน id ซ้ำกันในบล็อกหรือป๊อปอัปหลายๆ อันremove ก่อนแล้วค่อย add, การใช้ { once: true }, หรือการใช้ dataset เพื่อทำเครื่องหมายป้องกันการซ้ำ)