1. ความเข้าใจเกี่ยวกับ x-model
กับ Select Dropdown
x-model
ใช้สำหรับผูกค่าใน Select Dropdown โดยค่าที่ผู้ใช้เลือกจะถูกเก็บในตัวแปร State และสามารถใช้ค่าดังกล่าวในส่วนอื่น ๆ ของหน้าเว็บได้แบบเรียลไทม์
- ใช้ร่วมกับ
<select>
และ<option>
เพื่อให้ Dropdown Dynamic - รองรับทั้ง Single Select และ Multiple Select
2. การใช้งาน x-model
กับ Select Dropdown แบบ Single Select
ตัวอย่างพื้นฐาน:
<div x-data="{ selectedCountry: '' }">
<label for="country">Select your country:</label>
<select id="country" x-model="selectedCountry">
<option value="">Please select</option>
<option value="Thailand">Thailand</option>
<option value="Japan">Japan</option>
<option value="USA">USA</option>
</select>
<p>Your selected country: <span x-text="selectedCountry || 'None'"></span></p>
</div>
คำอธิบาย:
x-model="selectedCountry"
ผูกค่าที่เลือกจาก<select>
กับตัวแปรselectedCountry
- ค่าใน
<option>
จะถูกเก็บในselectedCountry
<span x-text="selectedCountry || 'None'">
แสดงค่าที่เลือก หรือแสดงNone
หากยังไม่ได้เลือก
3. การใช้งาน x-model
กับ Select Dropdown แบบ Dynamic
ตัวอย่าง: ใช้ข้อมูลจาก Array
<div x-data="{ countries: ['Thailand', 'Japan', 'USA'], selectedCountry: '' }">
<label for="dynamicCountry">Select your country:</label>
<select id="dynamicCountry" x-model="selectedCountry">
<option value="">Please select</option>
<template x-for="country in countries" :key="country">
<option x-text="country" :value="country"></option>
</template>
</select>
<p>Your selected country: <span x-text="selectedCountry || 'None'"></span></p>
</div>
คำอธิบาย:
countries
คือ Array ที่เก็บรายการประเทศ- ใช้
x-for
สร้าง<option>
แบบ Dynamic - ค่าใน
<option>
ถูกเก็บในตัวแปรselectedCountry
4. การใช้งาน x-model
กับ Select Dropdown แบบ Multiple Select
ตัวอย่าง:
<div x-data="{ selectedFruits: [] }">
<label for="fruits">Select your favorite fruits:</label>
<select id="fruits" x-model="selectedFruits" multiple>
<option value="Apple">Apple</option>
<option value="Banana">Banana</option>
<option value="Cherry">Cherry</option>
</select>
<p>Selected fruits:</p>
<ul>
<template x-for="fruit in selectedFruits" :key="fruit">
<li x-text="fruit"></li>
</template>
</ul>
</div>
คำอธิบาย:
- ใช้
x-model="selectedFruits"
กับ<select multiple>
- ผู้ใช้สามารถเลือกหลายตัวเลือกพร้อมกัน
- ค่าใน
selectedFruits
จะเก็บเป็น Array ของตัวเลือกที่เลือกไว้
5. การใช้ x-model
กับ Select Dropdown ที่มีค่าซับซ้อน
ตัวอย่าง: ใช้ Object เป็นค่า
<div x-data="{ selectedPlan: {}, plans: [
{ id: 1, name: 'Basic Plan' },
{ id: 2, name: 'Premium Plan' }
] }">
<label for="plan">Select your plan:</label>
<select id="plan" x-model="selectedPlan">
<option value="">Please select</option>
<template x-for="plan in plans" :key="plan.id">
<option :value="plan" x-text="plan.name"></option>
</template>
</select>
<p x-text="selectedPlan.name ? `Selected Plan: ${selectedPlan.name}` : 'No plan selected'"></p>
</div>
คำอธิบาย:
- ใช้ Object (
plan
) เป็นค่าใน<option>
- ตัวเลือกที่เลือกจะถูกเก็บในตัวแปร
selectedPlan
- แสดงชื่อของแผนที่เลือกโดยอ้างอิงจาก
selectedPlan.name
6. การใช้ Modifiers กับ Select Dropdown
Modifiers สามารถใช้ร่วมกับ x-model
เพื่อปรับพฤติกรรม เช่น:
.number
: แปลงค่าที่ได้จาก<option>
เป็นตัวเลข.trim
: ตัดช่องว่างหน้าและหลังของค่า
ตัวอย่าง: .number
<div x-data="{ selectedAgeGroup: 0 }">
<label for="age">Select your age group:</label>
<select id="age" x-model.number="selectedAgeGroup">
<option value="0">Select your age group</option>
<option value="18">18-25</option>
<option value="26">26-35</option>
<option value="36">36-45</option>
</select>
<p>Your selected age group: <span x-text="selectedAgeGroup || 'None'"></span></p>
</div>
คำอธิบาย:
.number
แปลงค่าที่เลือกเป็นตัวเลข- ค่า
selectedAgeGroup
จะเก็บเป็นตัวเลข เช่น18
,26
7. การตรวจสอบค่าที่เลือกใน Select Dropdown
ตัวอย่าง:
<div x-data="{ selectedOption: '' }">
<label for="options">Choose an option:</label>
<select id="options" x-model="selectedOption">
<option value="">Select an option</option>
<option value="Option 1">Option 1</option>
<option value="Option 2">Option 2</option>
</select>
<p x-show="!selectedOption">Please select an option.</p>
<p x-show="selectedOption" x-text="`You selected: ${selectedOption}`"></p>
</div>
คำอธิบาย:
- แสดงข้อความเตือนหากยังไม่ได้เลือกตัวเลือก
- เมื่อเลือกแล้ว แสดงข้อความพร้อมค่าที่เลือก
8. ข้อควรระวังในการใช้ x-model
กับ Select Dropdown
- ค่าใน
<option>
ควรเป็นเอกลักษณ์:- เพื่อป้องกันความสับสนหรือการเลือกผิด
- กำหนดค่าเริ่มต้นใน State:
- ควรตั้งค่าเริ่มต้นใน State ให้สอดคล้องกับค่าที่ต้องการใน Dropdown
- การจัดการค่าซับซ้อน:
- หากใช้ Object หรือ Array ควรตรวจสอบโครงสร้างข้อมูลให้ถูกต้อง
สรุป
ในบทนี้ คุณได้เรียนรู้การใช้ x-model
กับ Select Dropdown ทั้งแบบ Single Select และ Multiple Select พร้อมตัวอย่างการใช้ค่าซับซ้อน เช่น Object และการปรับพฤติกรรมด้วย Modifiers ในบทถัดไป เราจะพูดถึงการใช้ x-effect
เพื่อจัดการค่าที่เปลี่ยนแปลงใน State แบบอัตโนมัติ!