1

我想根据整数值迭代一个循环,就像整数值是 5 一样,那么循环将迭代五次。

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

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

在上面的“结束”中,我从对话框中获取值,如果我传递的值像 5,那么循环将执行 5 次。

我参考了以下链接:

我也进行了几次谷歌搜索,但我没有找到这种场景的任何示例,每个示例都基于视觉列表。

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

谢谢,

阿皮特波拉

4

2 回答 2

1

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

一种解决方法是使用 Use-API 帮助程序并简单地创建一个具有所需大小的列表,以便您可以迭代。

于 2016-09-30T12:49:34.337 回答
1

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

经过几次谷歌搜索和Sightly/HTL 文档后,我了解到Sightly/HTL 仅遍历集合

所以我使用“ HTL JavaScript Use-API ”来实现我的问题解决方案。

首先在我的 .js 文件中,在获取对话框整数值后,我将返回一个基于该值的数组。以下是我的“itemCount.js”文件的代码:

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

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

第二个在我的 .html 文件中,使用 Sightly List (data-sly-list) 我正在迭代数组。以下是我的“testCount.html”文件的代码:

<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>

--

谢谢,

阿皮特波拉

于 2016-10-02T02:59:57.190 回答