2016-05-20 82 views

回答

5

迭代中爲for loop打印數字悅目不會讓你把任何邏輯在它的設計。你應該做的是,你應該定製你的基礎模型,以便你可以檢索一個準備好的不相關的列表(從Sightly的角度來看),其中包含需要顯示的數據。之後,只需使用data-sly-list。你需要谷歌的更多的細節,但在一般情況下,這是你如何在悅目使用列表:

<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>),儘管我不確定這是否是「視覺方式」。就個人而言,我建議不要這樣做,除非這會讓你的生活更加容易。

+0

「爲了澄清:你不能得到myitems列表,並通過6遍歷項目2 ...要做到這一點,你需要創建模型中的吸氣劑是隻返回這些項目,並使用此getter。「這不是一個很好的例子,因爲您可以遍歷'myitems'並使用'data-sly-test'僅顯示第2項到第6項。 ' = 2 && itemList.count <= 6}"> $ {項} ' – nateyolles

+0

這不就是測試這個列表是否在2到6個元素之間嗎? – CptBartender

+1

否。'ul'上的'data-sly-list'將遍歷整個列表,'data-sly-test'會確定是否在每次迭代時在最終的HTML輸出中包含或排除'li'元素,這個例子將打印列表中的項目2到6(我使用'count',它是基於一個的;我可以使用'index '這是從零開始的。) – nateyolles

3

請有此AEM論壇中樂poat: - 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> 

也請看看文檔: -

鏈接: - https://docs.adobe.com/docs/en/aem/6-1/develop/sightly/block-statements.html

//

LIST

數據狡猾列表:重複host元素的用於所提供的對象中的每個可枚舉屬性的內容。

下面是一個簡單的循環:

<dl data-sly-list="${currentPage.listChildren}"> 
    <dt>index: ${itemList.index}</dt> 
    <dd>value: ${item.title}</dd> 
</dl> 

代碼示例僅旨在用於說明的目的。

下默認的變量列表的範圍內,可供選擇:

項目:在迭代當前項。

itemList中:對象保持下列性質:

指數:基於零的計數器(0..length-1)。

count:one-based counter(1..length)。

first:如果當前項目是第一個項目,則爲true。

middle:如果當前項目既不是第一個也不是最後一個項目,則返回true。

last:如果當前項目是最後一個項目,則返回true。

奇數:如果索引是奇數,則返回true。

even:如果索引是偶數,則爲true。

//

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

我希望這會爲你工作。

感謝和問候

Kautuk薩尼