在我的 Vue 应用程序中,我使用v-data-table
,并且列值使用函数组件内的渲染函数呈现,如下所示:
render(createElement) {
if (this.$props.format) {
return this.$props.format(this.item, this.index, createElement);
}
return createElement('div', this.getText());
},
然后在我的format
函数(它是单独文件中对象的一部分)中,您可以使用它createElement
来创建一个 hTML 元素并返回它。这是应用程序另一部分的示例:
format: (template, index, createElement) => {
const captureType = template.captureType === 'passphrase' ? 'voice' : template.captureType;
return createElement('div', captureType);
},
因此,尽管如此,我正在尝试做一些相当复杂的事情,这是一个带有徽章的 Vuetify 图标。这是来自Vuetify 文档的代码。
<v-badge left>
<template v-slot:badge>
<span>6</span>
</template>
<v-icon
large
color="grey lighten-1"
>
shopping_cart
</v-icon>
</v-badge>
作为起点,我可以很好地创建基本的徽章 HTML
format: (item, index, createElement) => {
const propsObj = {
attrs: {
color: 'blue',
},
props: {
overlap: true,
left: true,
},
slots: {
badge: 'dummy',
},
};
return createElement('v-badge', propsObj, [createElement('v-icon', { attrs: { color: 'success', large: true } }, 'account_circle')]);
},
这让我几乎到了那里,因为它显示了我的图标,并且它被元素包裹badge
,尽管没有显示徽章内容:
<span class="v-badge v-badge--left v-badge--overlap">
<i aria ....>account_circle></a>
</span>
我的问题是获取badge
插槽的显示值。我错过了什么?