出现问题
当我在表格里使用el-switch,每次都是点击一次后就不能点击了。
我是这么写的:
<template>
<el-switch v-model="value" active-color="#579ef8" inactive-color="#ccc"></el-switch>
</template>
data(){
return {
value: true
}
}
然后我充满疑问对value进行了一个监听,这里我用的是 watch:
watch: {
value: {
handler: function (oldVal, newVal) {
console.log(oldVal, newVal);
},
immediate:true
},
}
然后发现监听的结果是这样的:
第二次点击的时候switch并不会从false状态变成true状态,之后继续点击也不会触发value改变了。
解决方法
这是因为我们的template没有设置slot-scope=“scope”!!!加上就好了!!!
<template slot-scope="scope">
<el-switch v-model="scope.row.statusVal" active-color="#579ef8" inactive-color="#ccc"></el-switch>
</template>
原因
element-UI 官方文档里有一句话,看!
通过 Scoped slot 可以获取到 row, column, $index 和 store(table 内部的状态管理)的数据。
所以说我们刚刚根本就没有获取到table内部的状态管理???
我们只是把this.value改变了!!
所以表格内部那个switch我们的v-model=“value”,按照刚刚设定的value: true来说:
switch中的value data中的value
初始值
| 初始值 | true | true |
|----------|-------| ----- |
| 第一次点击 | false | false |
| 第二次点击 | false | true |
具体原因等我学一下。