当前位置: 首页 > 知识库问答 >
问题:

仅在有内容时才显示插槽

司空劲
2023-03-14

有没有什么内容只能显示插槽的方法

例如,我正在构建一个简单的<code>卡。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.$slot['页脚'],但这返回未定义。

有人有什么提示吗?

共有3个答案

通宾白
2023-03-14

CSS大大简化了这一点。只需使用下面的代码,瞧!

.panel-footer:empty {
  display: none;
}
邹学民
2023-03-14

您应该检查 vm.$slots 以及 vm.$scopedSlots 的它。

hasSlot (name = 'default') {
   return !!this.$slots[ name ] || !!this.$scopedSlots[ name ];
}
琴俊良
2023-03-14

它应该可以在

this.$slots.footer

所以,这应该行得通。

hasFooterSlot() {
  return !!this.$slots.footer;
}

例子。

 类似资料:
  • 我使用fiddler监控一个简单的html内容从一个PHP文件运行在localhost。但是每当我按f5刷新页面(浏览器)时,在fiddler中有时整个web会话的字体变成蓝色,即当它实际显示内容(html)时,相反的情况发生在web会话是灰色的时候,它不显示html内容。 注意:始终显示请求/响应标题,这仅用于内容。我还尝试了点技巧(“:80”)并从localhost切换到127.0。0.1.

  • 我尝试了和(切换到和从透明的),但没有成功。我也看不到任何内置的方法来做我想要的事情。 我只想在CollapsingToolbarLayout完全折叠时显示标题,否则,我需要隐藏它。

  • 问题内容: 我一直在寻找一个很好的技巧,使隐藏/显示内容或仅具有CSS而没有javascript的列表。我已成功执行此操作: 并且它正在工作,但没有达到应有的效果。这是问题所在:显示内容时,您可以通过单击“页面上的任何位置”将其隐藏。如何禁用它?如何通过单击“隐藏”隐藏内容“仅”?先感谢您! 问题答案: 我不会使用复选框,而是使用您已经拥有的代码 CSS HTML 这样,仅在单击hide元素时隐藏

  • 我不确定我的方向是否正确,但我试图实现的目标相当复杂,至少对我来说是这样。所以我要找的是找到HTML类标签中的内容,并在我想要的任何地方显示这些内容。让我们以一个网站上的在线产品为例,假设标题上的代码写得如下: 是的,我知道我可以使用如下变量: HTML: 风格:

  • 显示Flash®内容   使用PSP-1000系列时,选择PSP™主机之(设定) > (主机设定),并将[启动Flash® Player]设定为有效后,即能显示支持Macromedia® Flash®之内容。 提示 已安装Macromedia® Flash® Player 6(不支持部份机能)。 设定为有效却仍无法显示Flash®内容时,请进入选单列之[工具] > [设定] > [显示设置]并变更

  • 我对fragment and recyclerView和翻新有问题 我的第一个片段显示了一个人员列表,当我开始片段活动时不显示内容,当我移动到第三个片段并返回到第一个片段时,内容出现。。。此外,当我使用编辑搜索文本和按搜索时,回收器视图必须刷新,但当我转到第三个片段并返回数据时,会出现<有什么问题吗?我正在使用改造2从服务器获取数据 我的片段: } 这是我的活动表和片段: //寻呼机。setOff