PlusMagi's Blog By Pitt Phunsanit

jQuery: TabulatorPlus

สำหรับการใช้งานร่วมกับ jQuery นั้น จะมีความตรงไปตรงมาสูงมาก เพราะ Tabulator ถูกออกแบบมาให้ทำงานกับ DOM โดยตรงได้ดีอยู่แล้วครับ

ในโลกของ jQuery เราจะเก็บ Instance ไว้ในตัวแปรธรรมดา หรือจะใช้ .data () ของ jQuery เพื่อผูก Instance ไว้กับ Element นั้น ๆ ก็ได้ เพื่อให้เรียกใช้ซ้ำได้จากทุกที่ครับ

$ (document) .ready (function () { // 1. กำหนดตัวแปรสำหรับเก็บ Instance (Reused Instance) let tableInstance = null; const $tableEl = $ ("#my-table") ; // --- FUNCTION: INITIALIZE (การสร้างครั้งแรก) --- function initTable (initialData) { // ตรวจสอบเพื่อไม่ให้สร้างซ้อน (Idempotent) if (tableInstance) return; tableInstance = new TabulatorPlus ($tableEl[0], { data: initialData, columns: [ { title: "ID", field: "id", width: 50 }, { title: "Product", field: "product", width: 200 }, { title: "Price", field: "price", formatter: "money" }, ], }, "jquery-storage-key") ; // หรือจะเก็บไว้ใน jQuery Data เพื่อเรียกใช้จากที่อื่นก็ได้ $tableEl.data ("tabulator-instance", tableInstance) ; } // --- FUNCTION: REFRESH (อัปเดตข้อมูล) --- window.refreshTableData = function (newData) { if (tableInstance) { console.log ("Refreshing data...") ; // ใช้ .setData () เพื่ออัปเดตข้อมูลโดยไม่ต้องวาดตารางใหม่ทั้งหมด tableInstance.setData (newData) ; } }; // --- FUNCTION: ACTION (เรียกใช้ Method) --- $ ("#btn-clear-filter") .on ("click", function () { if (tableInstance) { tableInstance.clearFilter (true) ; } }) ; // --- FUNCTION: UNMOUNT / DESTROY (การล้างข้อมูล) --- window.destroyTable = function () { if (tableInstance) { console.log ("Destroying table...") ; // ล้าง Event และ DOM ที่ Tabulator สร้างขึ้น tableInstance.destroy () ; tableInstance = null; $tableEl.removeData ("tabulator-instance") ; } }; // ทดลองรัน initTable ([ { id: 1, product: "Laptop", price: 35000 }, { id: 2, product: "Mouse", price: 1200 } ]) ;
}) ;

💡 คำอธิบายสำหรับการใช้งานแบบ jQuery


เปรียบเทียบภาพรวม

ฟีเจอร์Framework jQuery
Lifecycleจัดการผ่าน Hooks จัดการเองด้วยฟังก์ชัน
Data Bindingอัปเดตผ่าน Props / Watchอัปเดตผ่านฟังก์ชัน setData ()
Stateเก็บใน Component State / Refเก็บในตัวแปร Global หรือ .data ()

การทำ Wrapper แบบ TabulatorPlus นี้ช่วยให้คุณเขียนโค้ด jQuery ได้สะอาดขึ้นมาก เพราะไม่ต้องใส่ Config ยาว ๆ ทุกครั้งที่สร้างตารางครับ


อ่านเพิ่มเติม

Exit mobile version