看文档Switch 开关 | Element Plus
设置beforeChange 属性,若返回 false 或者返回 Promise 且被 reject,则停止切换。
const beforeChange2 = () => {
loading2.value = true
return new Promise((_, reject) => {
setTimeout(() => {
loading2.value = false
ElMessage.error('Switch failed')
return reject(new Error('Error'))
}, 1000)
})
}
实际情况是我们需要先发送请求根据返回的结果判断是否需要切换状态。那么问题来了,before-change这个钩子是不带参数的,怎么传参呢?
?参考了iview使用i-switch 触发 beforeChange - 掘金
这篇文章的评论,找到解决办法:使用bind?
<el-switch
v-model="data.manage_show"
inline-prompt
active-color="#69C0FF"
inactive-color="#eed"
active-text="后台显示"
inactive-text="后台隐藏"
:active-value="1"
:inactive-value="0"
:before-change="beforeShowChangeManage.bind(this, data)"
@change="showChanged"
/>
//methods中定义
beforeShowChangeManage (row){
return new Promise((resolve, reject)=>{
try{
axios.post('/api/manage/manageShowCategory',
{
id: row.id,
manage_show: row.manage_show===1?0:1
},
{
headers: {'token': localStorage['token']}
}).then(value=>{
resolve(true)
}, reason=>{
reject(false)
})
}catch(err){
reject(false)
}
})
}
完成。
|