在 alfresco freemarkuer 模板中列出 javascript 数组

List javascript array in alfresco freemarkuer template

基本上我填充了以下 JavaScript 个数组:

array1 = new Array(1, 2, 3);
array2 = new Array("Title1", "Title2", "Title3");
array3 = new Array("10-02-2017", "11-02-2017", "12-02-2017");

bigArray = new Array();
bigArray.push(array1);
bigArray.push(array2);
bigArray.push(array3);

model.entry = bigArray;

现在在 ftl 文件中,我想从 ftl 文件中获取以下输出:

1, Title1, 10-02-2017
2, Title2, 11-02-2017
3, Title3, 12-02-2017

我如何"call"这样的用例?我什至不知道 google 有什么用,所以我可以阅读手册之类的东西。你能帮忙或推荐一些有用的教程吗?

您可以使用 JSON 对象而不是多个数组来映射您的对象,否则这里是 FTL 代码来获取您的输出。

<#list entry[0] as item0>
  ${item0}, 
  <#list entry[1] as item1>
    <#if item1?index == item0?index>
      ${item1}, 
    </#if>
  </#list>
  <#list entry[2] as item2>
    <#if item2?index == item0?index>
      ${item2}
    </#if>
  </#list>
  <br />
</#list>

如果这样的索引不存在,考虑处理异常。

我想重点是你想遍历三个交错的数组。在那种情况下,我只会遍历公共索引:

<#list 0 ..< entry[0]?size as i>
${entry[0][i]}, ${entry[1][i]}, ${entry[2][i]}
</#list>

我只是通过将我的 bigArray 拆分为单个数组来解决它。

所以我不再:

bigArray = new Array();
bigArray.push(array1);
bigArray.push(array2);
bigArray.push(array3);

model.entry = bigArray;

现在我有:

model.ids = array1;
model.titles = array2;
model.dates = array3;

然后我这样输出它们:

IDs:
<#list ids as id>
  ${id}<#sep>,
</#list><br>

Titles:
<#list titles as title>
  ${title}<#sep>,
</#list><br>

Dates:
<#list dates as date>
  ${date}<#sep>,
</#list><br>

所以我的输出看起来有点不同:

IDs: 1,2,3
Titles: Title1, Title2, Title3
Dates: 10-02-2017, 11-02-2017, 12-02-2017

感谢您的帮助!