【问题标题】:data-sly-list how to check for first itemdata-sly-list 如何检查第一项
【发布时间】:2016-07-20 12:46:13
【问题描述】:

使用 data-sly-list 我可以在 Sightly 中迭代列表对象,但我如何检查第一个

<li>

并为其添加一个特定的类? 另外,如何分别显示每个项目?现在我的列表看起来像一个 LI,所有项目都用逗号分隔。 (&lt;li&gt; item1,item2,item3 &lt;/li&gt;)

<ol data-sly-list="${currentPage.title}">
     <li>${properties.title}</li>
</ol>

我确实尝试过:

<div data-sly-test="${!first}">

但没用...有什么想法吗?

【问题讨论】:

    标签: list aem sightly


    【解决方案1】:

    检查spec,您可以为此使用itemList 变量:

    <ol data-sly-list="${['a', 'b', 'c']}">
      <li class="${itemList.first?'first':''}">${item}</li>
    </ol>
    

    【讨论】:

      【解决方案2】:

      在标准 AEM 示例模板和组件中,jcr:title 是一个单值字段,因此迭代 ${currentPage.title} 只会生成一个列表项。 您的代码应如下所示:

      <ol data-sly-list="${currentPage.title}">
           <li class="${itemList.first?'first':''}">${item}</li>
      </ol>
      

      但我不确定,你在做什么。 jcr:title 是页面组件中的多值字段吗?还是它是单个值并包含一个逗号分隔的列表?

      如果jcr:title 是一个多值字段,那么就会出现下一个问题,因为来自com.day.cq.wcm.api.Page 的方法getTitle() 返回的是字符串值而不是列表值。

      您必须使用 properties 对象来代替:

      <ol data-sly-list="${properties.jcr:title}">
           <li class="${itemList.first?'first':''}">${item}</li>
      </ol>
      

      这应该对你有用。

      我的建议是尽可能将 jcr:title 切换回单值字段,以保持内部 API 正常工作,并添加另一个可能是多值字段的字段(即 myTitle)。

      【讨论】:

      • jcr:title 它是一个多值字段,如果有意义,我想将它们显示为列表并在第一个项目中添加一个特定的类?
      猜你喜欢
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多