在element ui中el-switch开关组件具有先改变开关值再传值的特点。(先改后传)
比如:

<el-switch v-model="scope.row.open" :active-value="1" :inactive-value="0" @change="handleTuningMode1(scope.row)"></el-switch>

如果此时开关是开着的,也就是说open值是"1",那么当我们触发change事件的时候,传过去的open值是关闭的“0”值。

elementUI switch组件:
  • 无click事件,想要二次确认后再进行状态更改;
  • 使用change事件会先更新状态再传值,不好用;

解决办法

  • 添加@click.native.prevent方法
    给vue组件绑定事件时候,必须加上native ,否则会认为监听的是来自Item组件自定义的事件;
    prevent 是用来阻止默认的 ,相当于原生的event.preventDefault();
  • 与此同时需要打开disabled属性
    是因为不加disabled会出现调用两次的非理想状态
<el-switch v-model="scope.row.open" :active-value="1" :inactive-value="0" @click.native.prevent="handleTuningMode(scope.row)" disabled></el-switch>
disabled样式问题

在设置disabled后开关会有鼠标禁用的样式及透明度的变化,我们需要做修改;

<style>
/* 修改elementUI-switch组件 disabled样式 */
.el-switch.is-disabled {
 opacity: 1;
}
.el-switch.is-disabled .el-switch__core, .el-switch.is-disabled .el-switch__label {
cursor: pointer !important;
}
</style>

不建议在写有scoped的style标签里修改,是因为scoped表示它的样式作用于当下的模块,很好的实现了样式私有化的目的

<style lang="less" scoped>
</style>
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐