Now.js Framework Documentation

Now.js Framework Documentation

TemplateManager - คู่มืออ้างอิง Directives

TH 15 Dec 2025 08:53

TemplateManager - คู่มืออ้างอิง Directives

ภาพรวม

TemplateManager เป็น template engine หลักของ Now.js Framework ที่มอบความสามารถในการ data-binding และ reactive rendering ผ่าน HTML data attributes

ความสามารถหลัก:

  • 🔗 Data Binding - เชื่อมข้อมูลกับ text, attributes และ classes
  • 🔄 Reactive Updates - อัพเดท UI อัตโนมัติเมื่อข้อมูลเปลี่ยน
  • 📋 List Rendering - แสดงผลรายการด้วย data-for
  • 🎯 Event Handling - จัดการ events แบบ declarative พร้อม modifiers
  • 🧩 Dynamic Components - โหลด components ตามต้องการ

อ้างอิงด่วน

Data Binding Directives

Directive หน้าที่ ตัวอย่าง
data-text แสดงข้อความ data-text="user.name"
data-html แสดง HTML data-html="article.content"
data-attr กำหนด attributes data-attr="href:link, title:tooltip"
data-class สลับ CSS classes data-class="active:isActive"
data-style กำหนด inline styles data-style="color:textColor"

Control Flow Directives

Directive หน้าที่ ตัวอย่าง
data-if แสดงผลแบบมีเงื่อนไข data-if="user.isLoggedIn"
data-for วนลูปแสดงรายการ data-for="item in items"

Form & Input Directives

Directive หน้าที่ ตัวอย่าง
data-model Two-way binding data-model="form.username"
data-checked สถานะ checkbox/radio data-checked="options.enabled"

Event & Component Directives

Directive หน้าที่ ตัวอย่าง
data-on จัดการ events data-on="click:handleClick"
data-container โหลด components แบบ dynamic data-container="currentView"
data-script เรียกฟังก์ชันเริ่มต้น data-script="initPage"

Syntax การเข้าถึงข้อมูล

การเข้าถึงข้อมูลพื้นฐาน

<!-- property ธรรมดา -->
<span data-text="username"></span>

<!-- property แบบซ้อน -->
<span data-text="user.profile.name"></span>

<!-- เข้าถึง array -->
<span data-text="items[0].name"></span>

กับ Context Variables

<!-- ใน data-for loops -->
<div data-for="item in items">
  <span data-text="item.name"></span>
  <span data-text="index"></span>
</div>

Template Interpolation

<!-- inline expressions -->
<p>สวัสดี {{ user.name }}!</p>
<p>รวม: {{ cart.items.length }} รายการ</p>

รูปแบบการใช้งานที่พบบ่อย

แสดงข้อมูลผู้ใช้

<div class="user-card">
  <h2 data-text="user.name"></h2>
  <p data-text="user.email"></p>
  <img data-attr="src:user.avatar, alt:user.name">
</div>

แสดงผลแบบมีเงื่อนไข

<div data-if="user.isLoggedIn">
  <p>ยินดีต้อนรับ <span data-text="user.name"></span>!</p>
</div>

<div data-if="!user.isLoggedIn">
  <a href="/login">กรุณาเข้าสู่ระบบ</a>
</div>

รายการแบบ Dynamic

<ul data-for="item in menuItems">
  <template>
    <li>
      <a data-attr="href:item.url" data-text="item.label"></a>
    </li>
  </template>
</ul>

Form Binding

<form data-form="contact">
  <input type="text" data-model="form.name" placeholder="ชื่อ">
  <input type="email" data-model="form.email" placeholder="อีเมล">
  <textarea data-model="form.message"></textarea>
  <button data-on="click:submitForm">ส่ง</button>
</form>

เอกสารฉบับละเอียด

สำหรับเอกสารฉบับสมบูรณ์ของแต่ละ directive ดูที่:

ที่เกี่ยวข้อง