迭代(for循环)一目了然
Iteration (for loop) in sightly
我在jstl中使用过<c:forEach>
。现在想用sightly
我的用例是打印从 1 到 10 的数字,然后我怎样才能像 for loop
in java
那样快速迭代
Sightly 不允许您在设计中放入任何逻辑。您应该做的是,您应该自定义您的基础模型,以便您可以检索准备好的不相关(从 Sightly 的角度来看)长度列表,其中包含需要显示的数据。之后,只需使用 data-sly-list
。您需要 google 了解更多详情,但一般来说,这是您在 Sightly 中使用列表的方式:
<ul data-sly-list.myitem="${mymodel.myitems}" data-sly-unwrap>
<li>${myitem.foo}</li>
</ul>
编辑:正如@nateyolles 所指出的,您可以通过在测试条件 (<li data-sly-test="${itemList.count >= 2 && itemList.count <= 6}">${item}</li>
) 中使用索引来迭代特定范围的项目,但我不确定这是否是 "Sightly way"。就个人而言,我建议不要这样做,除非它会让您的生活明显更轻松。
请看看这个 AEM 论坛的帖子:- http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.html/forum__wtot-hi_i_need_toite.html
使用固定数量的项目循环
<ul data-sly-list="${ [1,2,3,4] }">
<li>${item}</li>
</ul>
另请查看文档:-
Link:- https://docs.adobe.com/docs/en/aem/6-1/develop/sightly/block-statements.html
//
列表
data-sly-list:为提供的对象中的每个可枚举属性重复宿主元素的内容。
这是一个简单的循环:
<dl data-sly-list="${currentPage.listChildren}">
<dt>index: ${itemList.index}</dt>
<dd>value: ${item.title}</dd>
</dl>
代码示例仅供说明之用。
以下默认变量在列表范围内可用:
item:迭代中的当前项目。
itemList:拥有以下属性的对象:
索引:从零开始的计数器(0..length-1)。
计数:从一开始的计数器(1..长度)。
first:如果当前项是第一项,则为真。
middle: 如果当前项既不是第一项也不是最后一项则为真。
last:如果当前项目是最后一个项目,则为真。
奇数:如果索引为奇数,则为真。
偶数:如果索引为偶数则为真。
//
<ul data-sly-list.child="${currentPage.listChildren}">
<li class="${ childList.odd ? 'odd' : 'even'}">${child.title}</li>
</ul>
//
<div data-sly-list.children="${resource.listChildren}">
<div data-sly-list.fields="${children.listChildren}">
<div data-sly-test=${fieldsList.last}> DO SOMETHING BEFORE LAST NODE</div>
<div data-sly-resource="${fields.path}"></div>
</div>
</div>
所以根据您的用例,您可以使用:
<ul data-sly-list.child="${currentPage.listChildren}">
<li data-sly-test="${childList.index <= 5}">${child.title}</li>
</ul>
希望这对你有用。
感谢和问候
考图克萨尼
我在jstl中使用过<c:forEach>
。现在想用sightly
我的用例是打印从 1 到 10 的数字,然后我怎样才能像 for loop
in java
Sightly 不允许您在设计中放入任何逻辑。您应该做的是,您应该自定义您的基础模型,以便您可以检索准备好的不相关(从 Sightly 的角度来看)长度列表,其中包含需要显示的数据。之后,只需使用 data-sly-list
。您需要 google 了解更多详情,但一般来说,这是您在 Sightly 中使用列表的方式:
<ul data-sly-list.myitem="${mymodel.myitems}" data-sly-unwrap>
<li>${myitem.foo}</li>
</ul>
编辑:正如@nateyolles 所指出的,您可以通过在测试条件 (<li data-sly-test="${itemList.count >= 2 && itemList.count <= 6}">${item}</li>
) 中使用索引来迭代特定范围的项目,但我不确定这是否是 "Sightly way"。就个人而言,我建议不要这样做,除非它会让您的生活明显更轻松。
请看看这个 AEM 论坛的帖子:- http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manager.topic.html/forum__wtot-hi_i_need_toite.html
使用固定数量的项目循环
<ul data-sly-list="${ [1,2,3,4] }">
<li>${item}</li>
</ul>
另请查看文档:-
Link:- https://docs.adobe.com/docs/en/aem/6-1/develop/sightly/block-statements.html
//
列表
data-sly-list:为提供的对象中的每个可枚举属性重复宿主元素的内容。
这是一个简单的循环:
<dl data-sly-list="${currentPage.listChildren}">
<dt>index: ${itemList.index}</dt>
<dd>value: ${item.title}</dd>
</dl>
代码示例仅供说明之用。
以下默认变量在列表范围内可用:
item:迭代中的当前项目。
itemList:拥有以下属性的对象:
索引:从零开始的计数器(0..length-1)。
计数:从一开始的计数器(1..长度)。
first:如果当前项是第一项,则为真。
middle: 如果当前项既不是第一项也不是最后一项则为真。
last:如果当前项目是最后一个项目,则为真。
奇数:如果索引为奇数,则为真。
偶数:如果索引为偶数则为真。
//
<ul data-sly-list.child="${currentPage.listChildren}">
<li class="${ childList.odd ? 'odd' : 'even'}">${child.title}</li>
</ul>
//
<div data-sly-list.children="${resource.listChildren}">
<div data-sly-list.fields="${children.listChildren}">
<div data-sly-test=${fieldsList.last}> DO SOMETHING BEFORE LAST NODE</div>
<div data-sly-resource="${fields.path}"></div>
</div>
</div>
所以根据您的用例,您可以使用:
<ul data-sly-list.child="${currentPage.listChildren}">
<li data-sly-test="${childList.index <= 5}">${child.title}</li>
</ul>
希望这对你有用。
感谢和问候
考图克萨尼