prevent-switching.vue 957 B

1234567891011121314151617181920212223242526272829303132333435
  1. <template>
  2. <el-switch v-model="value1" :loading="loading1" :before-change="beforeChange1" />
  3. <el-switch v-model="value2" class="ml-2" :loading="loading2" :before-change="beforeChange2" />
  4. </template>
  5. <script lang="ts" setup>
  6. import { ref } from 'vue'
  7. import { ElMessage } from 'element-plus'
  8. const value1 = ref(false)
  9. const value2 = ref(false)
  10. const loading1 = ref(false)
  11. const loading2 = ref(false)
  12. const beforeChange1 = () => {
  13. loading1.value = true
  14. return new Promise(resolve => {
  15. setTimeout(() => {
  16. loading1.value = false
  17. ElMessage.success('Switch success')
  18. return resolve(true)
  19. }, 1000)
  20. })
  21. }
  22. const beforeChange2 = () => {
  23. loading2.value = true
  24. return new Promise((_, reject) => {
  25. setTimeout(() => {
  26. loading2.value = false
  27. ElMessage.error('Switch failed')
  28. return reject(new Error('Error'))
  29. }, 1000)
  30. })
  31. }
  32. </script>