Now.js Framework Documentation

Now.js Framework Documentation

CodeElementFactory

TH 09 Nov 2026 03:28

CodeElementFactory

ภาพรวม

CodeElementFactory คือส่วนที่ทำให้ CodeEditor เป็นช่องของฟอร์ม: <textarea data-element="code">
กลายเป็นตัวเขียนโค้ดที่ยังทำงานเหมือนช่องอื่น ส่งไปกับฟอร์ม รับ required และ data-validate แสดงข้อความของ FormError
และเติมค่าจาก data-attr="value:..." และ instance.value ได้

<form data-form="settings">
  <label for="config">Config</label>
  <textarea id="config" name="config" data-element="code" data-language="json" data-max-height="400" required></textarea>
</form>

สร้างจากสคริปต์:

const field = ElementManager.create('code', {id: 'snippet', name: 'snippet', language: 'php', minLines: 10});
form.appendChild(field.element.closest('.code-editor'));

Attribute

Attribute ค่าเริ่มต้น คำอธิบาย
data-language text javascript, json, html, css, php, sql, text และชื่อแฝง
data-line-numbers true false ซ่อนเลขบรรทัด
data-tab-size 2 จำนวนคอลัมน์ต่อระดับย่อหน้า
data-indent-with-tabs false ย่อหน้าด้วยอักขระ tab
data-auto-close-brackets true false เลิกพิมพ์วงเล็บและเครื่องหมายคำพูดปิดให้
data-auto-indent true false ให้ Enter ธรรมดา
data-min-lines 5 จำนวนบรรทัดที่เห็นอย่างน้อย
data-height — ความสูงคงที่ (px หรือหน่วย CSS) เลื่อนภายใน
data-max-height — สูงตามเนื้อหาจนถึงค่านี้
data-theme — light หรือ dark ถ้าไม่ระบุจะตามหน้าเว็บ

ชื่อเดียวกัน (แบบ camelCase) ใช้เป็นตัวเลือกของ ElementManager.create('code', {...}) ได้

Instance

สมาชิก คำอธิบาย
instance.editor CodeEditor ของช่องนี้
instance.value อ่านหรือกำหนดโค้ด การกำหนดจะระบายสีใหม่
instance.language อ่านหรือเปลี่ยนภาษา

validation, required, isValid(), reset() และ FormError ทำงานเหมือนช่องอื่น ช่องที่ไม่ผ่านจะได้ขอบสีแดงทั้งตัวเขียน

เมธอด

static create(def)

สร้างช่องโค้ดจาก field definition ได้ <textarea> เสมอ

static extractCustomConfig(element, def, dataset)

อ่านตัวเลือกของตัวเขียนจาก attribute data-* คืนเฉพาะตัวเลือกที่ระบุ ที่เหลือใช้ค่าเริ่มต้น

static setupEventListeners(instance)

ผูกตัวเขียนหลังจาก factory พื้นฐานเตรียม element เสร็จ ตัวเขียนจึงครอบ accessor value ของเฟรมเวิร์ก
และค่าที่ FormManager หรือ instance.value กำหนดก็ถูกระบายสีใหม่ด้วย

เอกสารที่เกี่ยวข้อง

  • CodeEditor - ตัวเลือก ปุ่มลัด ภาษา และการจัดรูปแบบ
  • ElementManager - ชนิดของช่องในฟอร์ม