如果它有任何内容,有没有办法只显示一个插槽?
例如,我正在构建一个简单的 Card.vue
组件,并且我只希望在页脚插槽有内容时显示页脚:
模板
<template>
<div class="panel" :class="panelType">
<div class="panel-heading">
<h3 class="panel-title">
<slot name="title">
Default Title
</slot>
</h3>
</div>
<div class="panel-body">
<slot name="body"></slot>
<p class="category">
<slot name="category"></slot>
</p>
</div>
<div class="panel-footer" v-if="hasFooterSlot">
<slot name="footer"></slot>
</div>
</div>
</template>
脚本
<script>
export default {
props: {
active: true,
type: {
type: String,
default: 'default',
},
},
computed: {
panelType() {
return `panel-${this.type}`;
},
hasFooterSlot() {
return this.$slots['footer']
}
}
}
</script>
在视图中:
<card type="success"></card>
由于上述组件不包含页脚,因此不应渲染它,但它是。
我试过使用 this.$slots['footer']
,但这返回未定义。
有没有人有任何提示?
原文由 Steve Bauman 发布,翻译遵循 CC BY-SA 4.0 许可协议
它应该在
所以,这应该有效。
例子。