Files
toutoukan_front/miniprogram/pages/home/home.ts

55 lines
1.5 KiB
TypeScript
Raw Normal View History

2025-08-09 17:41:14 +08:00
Component({
2025-09-24 21:10:29 +08:00
data: {
// 用对象存储多个卡片的选中状态键为卡片ID值为选中的选项ID
selectedOptions: {} as Record<string, string>
},
methods: {
/**
*
* @param e ID和选项ID
*/
selectOption(e: WechatMiniprogram.TouchEvent) {
const { card, id } = e.currentTarget.dataset as { card: string; id: string };
// 更新选中状态(使用对象展开语法保持响应式)
this.setData({
selectedOptions: {
...this.data.selectedOptions,
[card]: id
}
});
},
/**
*
* @param e ID
*/
submitVote(e: WechatMiniprogram.TouchEvent) {
const { card } = e.currentTarget.dataset as { card: string };
const selected = this.data.selectedOptions[card];
if (!selected) {
wx.showToast({
title: '请先选择一个选项',
icon: 'none',
duration: 2000
});
return;
}
// 可以通过triggerEvent向父组件传递投票结果
this.triggerEvent('voteSuccess', {
cardId: card,
selectedOption: selected,
timestamp: Date.now()
});
wx.showToast({
title: '投票成功',
icon: 'success',
duration: 2000
});
}
}
});