data-sly-list 如何检查第一项

data-sly-list how to check for first item

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

<li>

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

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

我试过:

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

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

选中 spec,您可以为此使用 itemList 变量:

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

在标准 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 returns 中的方法 getTitle() 是一个字符串值而不是列表值。

然后您必须使用 properties 对象:

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

这应该对你有用。

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