2025-01-01 旅行分帳應用程式-步驟03
太棒了~這樣設計互動更直覺、也更人性化!
你點選某位成員時,就針對那位成員新增「他/她付款的支出」對吧?
那我們來一步一步做這個功能:
✅ 目標
- 點某個成員
li
時 → 該成員下面出現「➕ 新增支出款項」按鈕
- 點按鈕後可以輸入:支出說明 + 金額
- 點「記錄支出」按鈕 → 將這筆支出記錄下來(下一步再處理)
✨ 第一步:點成員時,出現「新增支出款項」按鈕
🔧 修改 <template>
中的成員列表區塊如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <ul> <li v-for="(member, index) in members" :key="index" @click="selectMember(index)" :class="{ selected: selectedMemberIndex === index }" > {{ member.name }} <span class="owe">應付 $0</span>
<!-- 如果這位成員是被選中的,就顯示新增支出按鈕 --> <div v-if="selectedMemberIndex === index" class="add-expense-section"> <button class="btn small-btn" @click.stop="showAddExpense = true"> ➕ 新增支出款項 </button> </div> </li> </ul>
|
🧠 在 <script setup>
中加這些變數與方法
1 2 3 4 5 6 7 8 9 10 11 12 13
| const selectedMemberIndex = ref(null) const showAddExpense = ref(false)
function selectMember(index) { if (selectedMemberIndex.value === index) { selectedMemberIndex.value = null showAddExpense.value = false } else { selectedMemberIndex.value = index showAddExpense.value = false } }
|
🎨 建議加一點 CSS 讓選到的成員有背景色
1 2 3 4 5 6 7 8 9
| .selected { background-color: #ffe6e6; }
.small-btn { margin-top: 8px; font-size: 14px; padding: 6px 10px; }
|
🎯 測試你會看到的效果:
- 點成員 → 該列下面出現「➕ 新增支出款項」按鈕
- 再點一次該成員 → 關閉按鈕(取消選取)
- 點其他成員 → 切換顯示位置
要不要我接下來幫你做「新增支出款項」的輸入表單呢? 😎