Antd vue table表格二次嵌套slot插槽不显示问题

分类:前端来源:站内 最近更新:2020-09-19 16:46:15浏览:173留言:0

在使用antd-vue版的table表格二次嵌套自定义组件时,原以为用<slot />插槽的方式就可以引入父级的所有子元素,结果根本不显示。

解决思路

按照 Ant Design Vue 开发文档把插槽slot包裹起来,核心代码如下:

<a-table
  v-bind="$attr"
  
  @change="onChangeTable"
>
<!-- ..... -->

<!-- 自定义表格表头样式渲染项 -->
<template v-for="slotItem in headSlotColumns" :slot="slotItem.title">
  <slot :name="slotItem.title"></slot>
</template>

<!-- 自定义表格行渲染项 -->
<template
  v-for="slotItem in rowSlotColumns"
  :slot="slotItem.customRender"
  slot-scope="text, record, index"
>
  <slot
    :name="slotItem.customRender"
    :text="text"
    :record="record"
    :index="index"
  ></slot>
</template>
<!-- ..... -->

</a-table>

<!-- ..... -->

computed: {
  //筛选出表头元素插槽数组
  headSlotColumns() {
    return this.$attrs.columns
      .filter(item => {
        return item.slots;
      })
      .map(item => item.slots);
  },
  //筛选出表行元素内容插槽数组
  rowSlotColumns() {
    return this.$attrs.columns
      .filter(item => {
        return item.scopedSlots;
      })
      .map(item => item.scopedSlots);
  },
}

<!-- ..... -->


0

发表评论

评论列表(0)

  • 暂时没有留言
热门