CommonTable
该组件采用jsx写法;对于组件的插槽放在config.slots;及作用域插槽放在scopedSlots中 由于jsx写法;
在vue2.x中通过config.on的方式调用组件传出的事件;不能再在组件上绑定传出的事件;否则会报错
包2.0以上适合vue3.x ;2.0以下适合vue2.x
Props
Name | Description | Type | Required | Default |
---|
data | table展示的数据vue2.x | Array | false | [] |
modelValue | table展示的数据vue3.x | Array | false | [] |
columns | 表格单元列展示的内容 | Array | false | [] |
config | table除data外其他的配置 | Object | false | {} |
options | 对拖拽table的配置;具体查看sortablejs的options | Object | false | {} |
Events
Event Name | Description | Parameters |
---|
select | 当用户手动勾选数据行的 Checkbox 时触发的事件 | selection, row |
select-all | 当用户手动勾选全选 Checkbox 时触发的事件 | - |
selection-change | 当选择项发生变化时会触发该事件 | selection |
cell-mouse-enter | cell-mouse-enter 当单元格 hover 进入时会触发该事件 | row, column, cell, event |
cell-mouse-leave | 当单元格 hover 退出时会触发该事件 | row, column, cell, event |
cell-click | 当某个单元格被点击时会触发该事件 | row, column, cell, event |
cell-dblclick | 当某个单元格被双击击时会触发该事件 | row, column, cell, event |
row-click | 当某一行被点击时会触发该事件 | row, column, event |
row-contextmenu | 当某一行被鼠标右键点击时会触发该事件 | row, column, event |
row-dblclick | 当某一行被双击时会触发该事件 | row, column, event |
header-click | 当某一列的表头被点击时会触发该事件 | column, event |
header-contextmenu | 当某一列的表头被鼠标右键点击时触发该事件 | column, event |
sort-change | 当表格的排序条件发生变化的时候会触发该事件 | { column, prop, order } |
filter-change | 当表格的筛选条件发生变化的时候会触发该事件,参数的值是一个对象,对象的 key 是 column 的 columnKey,对应的 value 为用户选择的筛选条件的数组 | filters |
current-change | 当表格的当前行发生变化的时候会触发该事件,如果要高亮当前行,请打开表格的 highlight-current-row 属性 | currentRow,oldCurrentRow |
header-dragend | 当拖动表头改变了列的宽度的时候会触发该事件 | newWidth, oldWidth, column, event |
expand-change | 当用户对某一行展开或者关闭的时候会触发该事件(展开行时,回调的第二个参数为 expandedRows;树形表格时第二参数为 expanded) | row, (expandedRows |
例子
import CommonTable from "rework-table"
Vue.use(CommonTable) vue2.x
app.use(CommonTable) vue3.x
<template>
<div>
<h2>vue2.x写法</h2>
<common-table :data='data' :config="config" :columns="columns"></common-table>
<h2>vue3.x写法</h2>
<common-table v-model='data' :config="config" :columns="columns" :options="options"></common-table>
</div>
</template>
<script>
data(){
return {
config:{
slots:{
default:(props)=>{
return (
<span>天</span>
)
},//匿名插槽
append:()=>{
return (
<div>123</div>
)
}, //el-table支持的插槽
},
script:true,
on:{
select:(selection, row)=>{
},//通过render函数的方式调用组件传出的事件;不能与在组件上绑定传出事件同时使用;只能选其一
}, // vue2.x的写法 只在vue2.x生效
onSelect:(selection, row)=>{} // vue3.x的写法 只在vue3.x生效
},
data:[],
columns:[
{
label:'姓名',
scopedSlots:{
heander:(props)=>{
return (
<span>天</span>
)
},//具名作用域插槽
default:(props)=>{
return (
<span>天</span>
)
},//匿名作用域插槽
}, //表格列作用域插槽写法 距离是该组件有一个header的作用域插槽 vue2.x写法 只在vue2.x生效
slots:{
heander:(props)=>{
return (
<span>天</span>
)
},//具名作用域插槽
default:(props)=>{
return (
<span>天</span>
)
},//匿名作用域插槽
}, //表格列作用域插槽写法 距离是该组件有一个header的作用域插槽 vue3.x写法 只在vue3.x生效
}
],
options:{
sort:true
} //具体查看sortablejs的options属性,它的事件大部分禁用了
}
}