如何使用一个整数值来循环迭代循环的值多少时间?

时间:2016-09-30 12:24:07

标签: aem sightly aem-6 htl

我希望基于Integer值迭代循环,如果整数值为5则循环将迭代五次。

我知道在jsp页面中使用JSTL的方法:

<c:forEach var="item" begin="1" end="${properties.value}" varStatus="loop">
    //statement
</c:forEach>

以上&#34;结束&#34; 从对话框中获取值,如果我传递的值为5,则循环将执行5次。

我在下面提到了链接:

我也做了几次谷歌搜索,我没有找到任何这种情况的例子,每个例子都是基于轻微的List。

我想根据对话框中传递的整数值使用它来做这件事。

谢谢,

Arpit Bora

2 个答案:

答案 0 :(得分:1)

在HTL / Sightly中,您只能迭代一个集合:https://github.com/Adobe-Marketing-Cloud/htl-spec/blob/master/SPECIFICATION.md#227-repeat

解决方法是使用Use-API帮助程序,只需创建一个具有所需大小的列表,以便进行迭代。

答案 1 :(得分:1)

分享我的解决方案,这对其他人有帮助:))

经过多次谷歌搜索后,从Sightly/HTL Documentation开始,我知道 Sightly / HTL仅在集合中进行迭代

所以我用了#34; HTL JavaScript Use-API&#34;实现我的问题解决方案。

首先在我的.js文件中,获取对话框整数值后,我根据该值返回一个数组。 以下是我的&#34; itemCount.js&#34;的代码。档案:

"use strict";
use(function () {
    var count = properties["loopCountValue"];

    return new Array(Number(count));
});

我的.html文件中的第二个,使用Sightly List(数据狡猾列表)i迭代数组。 以下是我的&#34; testCount.html&#34;的代码。档案:

<sly data-sly-use.clientLib="${'/libs/granite/sightly/templates/clientlib.html'}" />
<sly data-sly-use.itemCount="itemCount.js" data-sly-unwrap />

<sly data-sly-test="${!itemCount}">
    <div>
        <h2>Iterate a sightly loop based on Integer value passed from dialog.</h2>
    </div>
</sly>

<sly data-sly-test="${itemCount}">
    <p>Test Count ${itemCount}</p>

    <ul data-sly-list.contentCount="${colCount}">
        <li>ITEMS : ${contentCountList.count}</li>
    </ul>
</sly>

-

谢谢,

Arpit Bora