1. Directive คืออะไร?
Directive ใน Vue.js เป็นคำสั่งพิเศษที่เริ่มต้นด้วย v-
ใช้สำหรับการจัดการพฤติกรรมของ DOM (Document Object Model) เช่น การแสดง/ซ่อนองค์ประกอบ การทำงานกับข้อมูล และการจัดการ Event
2. Directive พื้นฐานใน Vue.js
2.1 v-bind
ใช้สำหรับผูกข้อมูลจาก JavaScript ไปยัง Attribute ของ HTML เช่น class, id, href
ตัวอย่าง:
<template>
<div>
<a :href="url">Visit Vue.js</a>
</div>
</template>
<script>
export default {
data() {
return {
url: 'https://vuejs.org'
};
}
};
</script>
ผลลัพธ์:
ลิงก์จะชี้ไปที่ https://vuejs.org
2.2 v-if
, v-else
, และ v-else-if
ใช้สำหรับการแสดงผลแบบเงื่อนไข
ตัวอย่าง:
<template>
<div>
<p v-if="isLoggedIn">Welcome back!</p>
<p v-else>Please log in.</p>
</div>
</template>
<script>
export default {
data() {
return {
isLoggedIn: false
};
}
};
</script>
ผลลัพธ์:
- ถ้า
isLoggedIn
เป็นtrue
จะแสดง “Welcome back!” - ถ้า
isLoggedIn
เป็นfalse
จะแสดง “Please log in.”
2.3 v-show
ใช้สำหรับการซ่อนองค์ประกอบด้วยการตั้งค่า CSS display: none
แทนการลบออกจาก DOM
ตัวอย่าง:
<template>
<div>
<p v-show="isVisible">This text is visible</p>
<button @click="toggleVisibility">Toggle Visibility</button>
</div>
</template>
<script>
export default {
data() {
return {
isVisible: true
};
},
methods: {
toggleVisibility() {
this.isVisible = !this.isVisible;
}
}
};
</script>
ผลลัพธ์:
- ข้อความจะแสดงหรือซ่อนตามค่า
isVisible
2.4 v-for
ใช้สำหรับการวนลูปข้อมูล เช่น Array หรือ Object
ตัวอย่าง:
<template>
<ul>
<li v-for="(item, index) in items" :key="index">
{{ index + 1 }}. {{ item }}
</li>
</ul>
</template>
<script>
export default {
data() {
return {
items: ['Apple', 'Banana', 'Cherry']
};
}
};
</script>
ผลลัพธ์:
- 1. Apple
- 2. Banana
- 3. Cherry
2.5 v-model
ใช้สำหรับการ Binding ข้อมูลแบบสองทาง (Two-Way Binding)
ตัวอย่าง:
<template>
<div>
<input v-model="name" placeholder="Enter your name" />
<p>Hello, {{ name }}</p>
</div>
</template>
<script>
export default {
data() {
return {
name: ''
};
}
};
</script>
ผลลัพธ์:
- เมื่อผู้ใช้พิมพ์ชื่อในช่อง Input ข้อความจะแสดงผลตามข้อมูลที่ป้อน
3. การสร้าง Custom Directive
นอกจาก Directive ที่มีให้แล้ว คุณยังสามารถสร้าง Directive เองได้
ตัวอย่าง:
<template>
<div>
<p v-highlight="'yellow'">This text is highlighted</p>
</div>
</template>
<script>
export default {
directives: {
highlight: {
beforeMount(el, binding) {
el.style.backgroundColor = binding.value;
}
}
}
};
</script>
คำอธิบาย:
- สร้าง Directive ชื่อ
highlight
- เปลี่ยนสีพื้นหลังขององค์ประกอบตามค่าที่ส่งเข้ามา
4. การใช้ Modifiers ใน Directive
Modifiers เป็นคำสั่งเพิ่มเติมที่ใช้กับ Directive เพื่อปรับเปลี่ยนพฤติกรรม
ตัวอย่าง:
<template>
<div>
<form @submit.prevent="submitForm">
<input type="text" v-model="name" placeholder="Enter your name" />
<button type="submit">Submit</button>
</form>
</div>
</template>
<script>
export default {
data() {
return {
name: ''
};
},
methods: {
submitForm() {
alert(`Submitted name: ${this.name}`);
}
}
};
</script>
คำอธิบาย:
- ใช้ Modifiers
.prevent
เพื่อป้องกันการ Refresh หน้าจอเมื่อส่งฟอร์ม
5. สรุป
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับ:
- Directive พื้นฐาน เช่น
v-bind
,v-if
,v-show
,v-for
, และv-model
- การสร้าง Custom Directive
- การใช้ Modifiers เพื่อปรับแต่งพฤติกรรม Directive
ในบทถัดไป เราจะศึกษาการจัดการ State ด้วย Vuex เพื่อเพิ่มความสามารถในการจัดการข้อมูลในแอปพลิเคชัน!