使用组件的render函数 改写el-table el-table-column

组件使用
<table-column
	className="inspect-record-table"
	align="center"
	:data="tableData"
	:highlight-current-row="false"
	:height="tableHeight"
	:tableHeader="tableHeader"
>
</table-column>
<script type="text/javascript">
  import tableColumn from "./tableColumn";
</script>
组件定义

tableColumn.vue

<script type="text/javascript">

    export default {
        name: "tableColumn",
        data() {
          return {
          }
        },
        props: {
          className: {
            type: String,
            default: ''
          },
          align: {
            type: String,
            default: ''
          },
          data: {
            type: Array,
            default: function() {
              return []
            }
          },
          height: {
            type: Number|String,
          },
          highlightCurrentRow: {
            type: Boolean,
            default: false
          },
          tableHeader: {
            type: Array,
            default: function() {
              return []
            }
          },
        },
        render(h) {
          return h('el-table',
            {
              class: this.className,
              attrs: {
                data: this.data,
                height: this.height,
                'highlight-current-row': this.highlightCurrentRow,
              },
              on: {

              }
            }, [
              this.tableHeader.map((item, index) => {
                return h('el-table-column', {
                  // inheritAttrs: false,
                  // attrs: item,
                  /* props: {
                    ...item
                  }, */
                  attrs: {
                    align: 'center',
                    ...item
                  },
                  scopedSlots: {
                      default: props => {
                        if(item['renderHTML']) {
                          return item['renderHTML'](h, props);
                        } else if(item['formatter']){
                          return item.formatter(props.row,props.column,props.row[item.prop], props.$index)
                        } else {
                          return props.row[item['prop']]
                        }
                      }
                  },
                })
              })
            ]
          )
        },
        methods: {

        }
    }
</script>
<style lang="scss">

</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值