@vinsea/vv-ui
Version:
A Component Library for Vue2.*.
54 lines (52 loc) • 1.41 kB
JavaScript
import TableTd from './TableTd';
export default {
name: 'VvTableTr',
props: {
dataTr: [Object, Array],
index: Number
},
render(h) {
const tds = [];
// if (this.$slots && this.$slots.default) {
// tds.push(...this.$slots.default);
// }
if (this.$parent.$slots.default) {
for (let td of this.$parent.$slots.default || []) {
if (td.data) {
let props = {};
if (td.componentOptions.propsData) {
Object.assign(props, td.componentOptions.propsData);
}
props.data = this.dataTr;
props.index = this.index;
let param = {props};
if (td.data.scopedSlots) {
param.scopedSlots = td.data.scopedSlots;
}
tds.push(h(TableTd, param));
}
}
} else if (!this.$parent.$scopedSlots.default && this.$parent.columns) {
for (let td of this.$parent.columns || []) {
let param = JSON.parse(JSON.stringify({props: td}));
param.props.data = this.dataTr;
param.props.index = this.index;
tds.push(h(TableTd, param));
}
}
// console.log('tds', tds);
return h(
'tr', {
class: 'vv-table-tr',
on: {
click: this.clickHandler
}
}, tds
);
},
methods: {
clickHandler(event) {
this.$emit('click', this.dataTr, this.index, event);
}
}
}