Как использовать целочисленное значение в визуально для итерации цикла столько раз, сколько значение?

Я хочу перебрать цикл, основанный на значении Integer, как если бы целочисленное значение было 5, то цикл будет повторяться пять раз.

Я знаю способ сделать это с помощью JSTL на странице JSP:

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

выше в "конце" я получаю значение из диалога, если я передаю значение как 5, то цикл будет выполняться 5 раз.

Я упомянул ниже ссылку:

Я также провел несколько поисков в Google, и я не нахожу никаких примеров этого сценария, каждый пример основан на визуальном списке.

Я хочу сделать это, используя визуально на основе переданного целочисленного значения из диалога.

Спасибо,

Арпит Бора

2 ответа

Решение

Поделиться своим решением, которое будет полезно для других:)...

После нескольких поисков в Google и из документации 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>

-

Спасибо,

Арпит Бора

В HTL/Sightly вы можете перебирать только коллекцию: https://github.com/Adobe-Marketing-Cloud/htl-spec/blob/master/SPECIFICATION.md#227-repeat

Обходным решением будет иметь помощника Use-API и просто создать список с желаемым размером, чтобы вы могли выполнять итерации.

Другие вопросы по тегам