AMP 列表 - 如果我们没有收到 API 的响应,如何删除空的 space?

AMP list - how to remove empty space if we get no response from the API?

我们有 AMP 页面,我们从服务器获取 3 个列表并将其绑定到客户端。 Here 是相同的 fiddle。

但是由于输出是动态的并且我们将高度指定为 100,在代码 here 中第二个列表返回空 json,我们看到很多空 space 这是不可取的。

获取空列表的代码是:

<amp-list width="auto" height="100" layout="fixed-height" src="https://ampbyexample.com/json/examples-empty.json" class="m1">
    <template type="amp-mustache" id="amp-template-id">
      <div><a href="{{url}}">{{title}}</a></div>
    </template>
</amp-list

我们如何摆脱这个固定高度的 AMP 列表并根据从服务器接收到的内容调整高度?

我读到了类似的内容 here 但我无法理解。有人可以分享如何解决这个问题吗?

amp-list 目前无法做到这一点。您可以改用 amp-access。方法是 return amp-access authorization 端点中的 JSON 数据。然后,您可以根据数据在页面上动态呈现内容:

<section amp-access="items">
  <template amp-access-template type="amp-mustache">
    {{#items}}
    <div><a href="{{url}}">{{title}}</a></div>
    {{/items}}
  </template>
</section> 

您可以将 auto-resize 属性添加到 <amp-list> 以动态更改 AMP 页面的高度。

关注此 github thread 了解更多详情。 检查来自 here.

的合并代码
<amp-list height="0" [height]="items.length * 100" layout="fixed-height" src="https://ampbyexample.com/json/examples-empty.json" class="m1">
    <template type="amp-mustache" id="amp-template-id">
      <div><a href="{{url}}">{{title}}</a></div>
    </template>
</amp-list

这将使您的列表始终保持在 0 高度,直到 Amp-List 有要显示的项目为止。然后它将为数组中的每个项目添加 100px 的高度。如果您搜索 Amp dynamic resizing

,也会显示此信息

我也有同样的问题,也许这个小技巧可以帮助其他人,只需编辑 div overflow 样式(高度和显示),这将保持您喜欢的高度,记住这一点div 需要文本值(不能为空)如果需要,只需将其可见性设置为隐藏即可。当小胡子模板上没有要显示的 json 值时,它会自动将空白 space 调整回正常。

<style amp-custom>
        amp-list > div.amp-visible{
            display:block;
            height:75px;
        }
        #hideButton{
            visibility: hidden;
        }
</style>    
<amp-list layout="flex-item" src="/static/inline-examples/data/amp-list-data.json">
<div overflow id="hideButton">See more</div>
  <template type="amp-mustache">
    <div class="image-entry">
      <amp-img src="{{imageUrl}}"
        width="100"
        height="75"></amp-img>
      <span class="image-title">{{title}}</span>
    </div>
</template>
</amp-list>