list.2vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <template>
  2. <div>
  3. <div v-for="(item, index) in items" :key="item.id" class="item">
  4. <span>{{ item.name }}</span>
  5. <button :disabled="uploadingStatus[index]" @click="handleUpload(index)">
  6. <span v-if="uploadingStatus[index]">上传中...</span>
  7. <span v-else>上传</span>
  8. </button>
  9. </div>
  10. </div>
  11. </template>
  12. <script>
  13. export default {
  14. data() {
  15. return {
  16. items: [{
  17. id: 1,
  18. name: '文件1'
  19. },
  20. {
  21. id: 2,
  22. name: '文件2'
  23. },
  24. // 其他文件项
  25. ],
  26. a:0,
  27. uploadingStatus: [true, false], // 初始化上传状态数组
  28. };
  29. },
  30. methods: {
  31. handleUpload(index) {
  32. this.a++
  33. console.log("aaaaa",this.a)
  34. console.log(`点击了文件 ${this.items[index].name} 的上传按钮`); // 确认点击事件是否触发
  35. if (this.uploadingStatus[index]) return; // 如果正在上传中,则直接返回
  36. this.uploadingStatus[index] = true; // 设置上传中状态
  37. this.$forceUpdate();
  38. // 模拟上传请求
  39. setTimeout(() => {
  40. // 假设这里是上传成功的情况
  41. this.uploadingStatus[index] = false; // 恢复按钮可用状态
  42. this.$forceUpdate();
  43. console.log(`文件 ${this.items[index].name} 上传成功!`);
  44. }, 2000); // 这里使用setTimeout模拟后端响应,实际中应替换为实际的后端上传逻辑
  45. },
  46. },
  47. };
  48. </script>