prevent-switching.vue 923 B

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