使用vue2+elemenrui 有两个按钮 当点击其中一个按钮 该按钮进入loading状态 另外一个按钮 禁用 当code==2000时或者时长超过10秒时 两个按钮都恢复默认状态
时间: 2023-05-26 22:04:03 浏览: 157
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
5星 · 资源好评率100%
可以使用Vue的数据绑定和计算属性来实现此功能。以下是示例代码:
```
<template>
<div>
<el-button :loading="button1Loading" @click="handleButton1Click" :disabled="button2Disabled">按钮1</el-button>
<el-button :disabled="button1Loading" @click="handleButton2Click">按钮2</el-button>
</div>
</template>
<script>
export default {
data() {
return {
button1Loading: false,
button2Disabled: false,
timer: null
}
},
computed: {
isDisabled() {
return this.button1Loading || this.button2Disabled
}
},
methods: {
handleButton1Click() {
this.button1Loading = true
this.button2Disabled = true
// 发送请求,等待响应
axios.get('/api/example')
.then(response => {
if (response.data.code === 2000) {
// code == 2000,按钮状态不变
alert('请求成功')
} else {
// code != 2000,按钮状态恢复
this.resetButtons()
}
})
.catch(error => {
console.log(error)
// 请求错误,按钮状态恢复
this.resetButtons()
})
// 设置定时器,10秒钟后恢复按钮状态
this.timer = setTimeout(() => {
this.resetButtons()
}, 10000)
},
handleButton2Click() {
alert('按钮2被点击')
},
resetButtons() {
this.button1Loading = false
this.button2Disabled = false
if (this.timer !== null) {
clearTimeout(this.timer)
}
}
}
}
</script>
```
在`data`选项中,定义了`button1Loading`和`button2Disabled`两个状态变量用于控制两个按钮的状态。在`computed`选项中,定义了一个计算属性`isDisabled`,计算出两个按钮是否处于禁用状态。在`methods`选项中,定义了三个方法:`handleButton1Click`处理按钮1的点击事件,`handleButton2Click`处理按钮2的点击事件,`resetButtons`恢复两个按钮的默认状态。在`handleButton1Click`方法中,首先设置两个按钮的状态,然后发送请求,等待响应。(这里使用了axios库进行请求的发送与响应操作)如果响应数据的`code`值为`2000`,则说明请求成功,仅弹出提示框,并不改变按钮的状态。否则,按钮状态恢复默认状态,超时时限10秒,会清除掉之前设置的超时,以避免多余的变化。
阅读全文