以IView的Switch 开关组件为例。 它的OnChange事件 本身会传递组件当前的状态。
把Switch放到表格的slot里,触发change事件时,只会得到当前Switch的状态
<Table border :columns="Columns" :data="Data" height='580' stripe :loading='loading'>
<template slot-scope="{ row, index }" slot="switch">
<i-Switch :value="row.switch" size="large" @on-change="switchChange">
<span slot="open">是</span>
<span slot="close">否</span>
</i-Switch>
</template>
</Table>
switchChange(status) {
console.log(status)//只会得到 true 、 false
},
如果我们想得到slot的row数据,并对代码做了如下修改。
<Table border :columns="Columns" :data="Data" height='580' stripe :loading='loading'>
<template slot-scope="{ row, index }" slot="switch">
<i-Switch :value="row.switch" size="large" @on-change="switchChange(row)"> //注意此处
<span slot="open">是</span>
<span slot="close">否</span>
</i-Switch>
</template>
</Table>
switchChange(row) {
console.log(row)// Object
},
则会得到row的数据。
那如果既想到Switch的status又想得到row的数据,有没有办法呢?答案当然是有的
<Table border :columns="Columns" :data="Data" height='580' stripe :loading='loading'>
<template slot-scope="{ row, index }" slot="switch">
<i-Switch :value="row.switch" size="large" @on-change="(status) => switchChange(status, row, index)"> //注意此处
<span slot="open">是</span>
<span slot="close">否</span>
</i-Switch>
</template>
</Table>
switchChange(status, row, index) {
console.log(status, row, index)// 可分别得到status,row,index
},
通过这种方法就可以既得到组件原本的参数,也得到调用组件时传递的参数。希望该方法能够给各位朋友在日常开发中遇到类似问题一点启发