mirror of
https://gitee.com/element-plus/element-plus.git
synced 2024-12-15 09:50:58 +08:00
60 lines
1.2 KiB
Vue
60 lines
1.2 KiB
Vue
|
<template>
|
||
|
<el-switch
|
||
|
v-model="value1"
|
||
|
:loading="loading1"
|
||
|
:before-change="beforeChange1"
|
||
|
/>
|
||
|
<el-switch
|
||
|
v-model="value2"
|
||
|
:loading="loading2"
|
||
|
:before-change="beforeChange2"
|
||
|
/>
|
||
|
</template>
|
||
|
<script lang="ts">
|
||
|
import { reactive, toRefs } from 'vue'
|
||
|
import { ElMessage } from 'element-plus'
|
||
|
|
||
|
export default {
|
||
|
setup() {
|
||
|
const status1 = reactive({
|
||
|
value1: false,
|
||
|
loading1: false,
|
||
|
})
|
||
|
|
||
|
const beforeChange1 = () => {
|
||
|
status1.loading1 = true
|
||
|
return new Promise((resolve) => {
|
||
|
setTimeout(() => {
|
||
|
status1.loading1 = false
|
||
|
ElMessage.success('switch success')
|
||
|
return resolve(true)
|
||
|
}, 1000)
|
||
|
})
|
||
|
}
|
||
|
|
||
|
const status2 = reactive({
|
||
|
value2: false,
|
||
|
loading2: false,
|
||
|
})
|
||
|
|
||
|
const beforeChange2 = () => {
|
||
|
status2.loading2 = true
|
||
|
return new Promise((_, reject) => {
|
||
|
setTimeout(() => {
|
||
|
status2.loading2 = false
|
||
|
ElMessage.error('switch failed')
|
||
|
return reject(new Error('error'))
|
||
|
}, 1000)
|
||
|
})
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
...toRefs(status1),
|
||
|
...toRefs(status2),
|
||
|
beforeChange1,
|
||
|
beforeChange2,
|
||
|
}
|
||
|
},
|
||
|
}
|
||
|
</script>
|