簡體   English   中英

如何在AMP中多次渲染同一元素?

[英]How to render same element multiple times in AMP?

假設我有關於用戶評論的以下json:

{
  "reviewRating": 4,
  "comment": "this is great"
}

然后,我使用amp-list遍歷評論。

<amp-list items="." single-item>
  <template type="amp/mustache">
    <!-- How can I render 4 star images here? -->
    <span>Rating: {{reviewRating}}</span>
    <p>{{comment}}</p>
  </template>
</amp-list>

對於reviewRating,我想從reviewRating鍵/值中渲染相同數量的星星,以提供更好的外觀。 如何在AMP中做到這一點?

通過組合amp-bindamp-list

<amp-bind-macro id="classForRating" arguments="rating, index" expression="rating >= index ? 'star-full' : (rating >= (index - 0.5) ? 'star-half' : 'star-empty')" ></amp-bind-macro>
<amp-state id="state" src="rating.json"></amp-state>
<amp-list width="136" height="24" src="rating.json" single-item items="rating" noloading>
  <template type="amp-mustache">
    <div class="star-rating" aria-label="rating: {{.}}" [aria-label]="'rating: ' + state.rating">
      <span [class]="classForRating(state.rating, 1)" class="star-empty"></span>
      <span [class]="classForRating(state.rating, 2)" class="star-empty"></span>
      <span [class]="classForRating(state.rating, 3)" class="star-empty"></span>
      <span [class]="classForRating(state.rating, 4)" class="star-empty"></span>
      <span [class]="classForRating(state.rating, 5)" class="star-empty"></span>
    </div>
  </template>
  <div class="star-rating" placeholder>
    <span class="star-empty"></span>
    <span class="star-empty"></span>
    <span class="star-empty"></span>
    <span class="star-empty"></span>
    <span class="star-empty"></span>
  </div>
</amp-list>

訣竅是對amp-stateamp-list使用相同的端點。 AMP運行時的響應緩存可確保僅導致單個請求。 呈現列表內容時,將評估amp-列表中的AMP綁定。 這樣就可以使用amp-bind設置星形值(通過CSS類)。

為了提供良好的加載體驗,我還使用noloading屬性禁用了放大器列表的默認加載指示器。 相反,我使用的是placeholder元素,在加載時顯示空星星。

是一個工作版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM