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" |
| Directive |
หน้าที่ |
ตัวอย่าง |
|---|
data-model |
Two-way binding |
data-model="form.username" |
data-checked |
สถานะ checkbox/radio |
data-checked="options.enabled" |
data-options-key |
เติม options จาก context.options |
data-options-key="countries" |
data-files |
แสดงไฟล์เดิมบน file input |
data-files="attachments" |
Data Rebinding Directives
| Directive |
หน้าที่ |
ตัวอย่าง |
|---|
data-bind |
ผูกข้อมูลเชิงโครงสร้างเข้า data-table / data-line-items |
data-bind="order.lines" |
Event & Component Directives
| Directive |
หน้าที่ |
ตัวอย่าง |
|---|
data-on |
จัดการ events |
data-on="click:handleClick" |
data-container |
โหลด components แบบ dynamic |
data-container="currentView" |
data-script |
เรียกฟังก์ชันเริ่มต้น |
data-script="initPage" |
data-on-load |
รัน setup หลัง block พร้อมใช้งาน |
data-on-load="hydrateCards" |
Animation Directives
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 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 ดูที่:
ที่เกี่ยวข้อง