การใช้ template ใน KnockoutJS

การ binding template ใน KnockoutJS นั้นทำได้โดยใช้ data-bind="template: function() { ... }"

data-bind="template: function() { ... }" จะผูกฟังก์ชันให้กับองค์ประกอบ DOM ซึ่งจะทำงานเมื่อองค์ประกอบ DOM ถูกโหลด

ฟังก์ชันที่ผูกไว้กับ template จะทำงานครั้งเดียวเมื่อองค์ประกอบ DOM ถูกโหลดครั้งแรก

ฟังก์ชันที่ผูกไว้กับ template จะได้รับอินพุตเป็นวัตถุที่ประกอบด้วยข้อมูลต่อไปนี้:

  • element: องค์ประกอบ DOM ที่ผูกไว้
  • data: ข้อมูลโมเดล
  • bindingContext: บริบทการผูก

คุณสามารถใช้ข้อมูลในวัตถุนี้เพื่อสร้างข้อความ HTML ที่จะแสดงในองค์ประกอบ DOM

ตัวอย่างเช่น:

1
2
3
4
<div data-bind="template: function() {
return '<h1>Hello, world!</h1>';
}">
</div>

สิ่งนี้จะสร้างส่วนหัวใหม่และผูกฟังก์ชัน sayHello() เข้ากับส่วนหัวนั้น ฟังก์ชัน sayHello() จะสร้างข้อความ HTML ที่จะแสดงในส่วนหัว

คุณยังสามารถใช้ data-bind="template: function() { ... }" เพื่อผูกฟังก์ชันไปยังองค์ประกอบ DOM แบบไดนามิกได้

ตัวอย่างเช่น:

1
2
3
4
5
<div data-bind="template: function(data) {
return '<h1>Hello, {name}</h1>';
}">
<input type="text" data-bind="value: name">
</div>

สิ่งนี้จะสร้างส่วนหัวใหม่และผูกฟังก์ชัน sayHello() เข้ากับส่วนหัวนั้น ฟังก์ชัน sayHello() จะสร้างข้อความ HTML ที่จะแสดงในส่วนหัว โดยอิงจากค่าของคุณสมบัติ name ในโมเดล

Here are some examples of how you can use template binding in KnockoutJS:

  • You can use template binding to create dynamic HTML content:
1
2
3
4
5
<div data-bind="template: function() {
return '<h1>Hello, {name}</h1>';
}">
<input type="text" data-bind="value: name">
</div>
  • You can use template binding to create reusable components:
1
2
3
4
5
6
7
8
9
10
11
12
<script>
function MyComponent() {
return {
template: function() {
return '<h1>Hello, world!</h1>';
}
};
}
</script>

<div data-bind="template: ko.observable(MyComponent)">
</div>
  • You can use template binding to create complex layouts:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<div data-bind="template: function() {
return '<div class="container">' +
'<div class="header">' +
'<h1>My Website</h1>' +
'</div>' +
'<div class="content">' +
'<p>This is my content.</p>' +
'</div>' +
'<div class="footer">' +
'<p>Copyright &copy; 2023</p>' +
'</div>' +
'</div>';
}">
</div>

Template binding เป็นเครื่องมือที่ทรงพลังที่สามารถใช้เพื่อสร้างเนื้อหา HTML ไดนามิกใน KnockoutJS

By using template binding, you can make your applications more dynamic.