12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- <template>
- <div>
- <div v-for="(item, index) in items" :key="item.id" class="item">
- <span>{{ item.name }}</span>
- <button :disabled="uploadingStatus[index]" @click="handleUpload(index)">
- <span v-if="uploadingStatus[index]">上传中...</span>
- <span v-else>上传</span>
- </button>
- </div>
- </div>
- </template>
- <script>
- export default {
- data() {
- return {
- items: [{
- id: 1,
- name: '文件1'
- },
- {
- id: 2,
- name: '文件2'
- },
- // 其他文件项
- ],
- a:0,
- uploadingStatus: [true, false], // 初始化上传状态数组
- };
- },
- methods: {
- handleUpload(index) {
- this.a++
- console.log("aaaaa",this.a)
- console.log(`点击了文件 ${this.items[index].name} 的上传按钮`); // 确认点击事件是否触发
- if (this.uploadingStatus[index]) return; // 如果正在上传中,则直接返回
- this.uploadingStatus[index] = true; // 设置上传中状态
- this.$forceUpdate();
- // 模拟上传请求
- setTimeout(() => {
- // 假设这里是上传成功的情况
- this.uploadingStatus[index] = false; // 恢复按钮可用状态
- this.$forceUpdate();
- console.log(`文件 ${this.items[index].name} 上传成功!`);
- }, 2000); // 这里使用setTimeout模拟后端响应,实际中应替换为实际的后端上传逻辑
- },
- },
- };
- </script>
|