在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

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐