Aem 条件语句

Aem 条件语句,aem,sightly,aem-6,Aem,Sightly,Aem 6,在AdobeAM6的模板语言中,如果条件为true,如何使用特定类 ${properties.reduceImage}是我的复选框,因此如果选中该复选框,则添加该类;如果未选中该复选框,则该类不会返回任何内容。我不确定我这样做是否正确 <div data-sly-test="${properties.reduceImage}" data-sly-unwrap> <div class="reduce-image"> </div> </div

在AdobeAM6的模板语言中,如果条件为true,如何使用特定类

${properties.reduceImage}是我的复选框,因此如果选中该复选框,则添加该类;如果未选中该复选框,则该类不会返回任何内容。我不确定我这样做是否正确

<div data-sly-test="${properties.reduceImage}" data-sly-unwrap>
    <div class="reduce-image">
    </div>
</div>

的表达式语言Sightly有几个操作符,可以执行类似的操作

在本例中,有两种可能:条件运算符,或逻辑AND(
&&
)运算符

条件运算符

此运算符的工作方式类似于
数据测试
,但在表达式级别。问号(
)前面是条件,然后是两部分,用一列隔开(
)。如果条件为true,则第一部分是输出,如果条件为false,则第二部分是输出(在您的示例中,我们将其保留为空)


逻辑与运算符

这篇文章有点短,但它的意图也不太明确。它使用这样一个事实,即与JavaScript中一样,${value1&&value2}如果它是falsy(例如false或空字符串),则返回value1,否则返回value2:

<div class="${properties.reduceImage && 'reduce-image'}">
</div>

在这两个示例中,如果相应的条件为false,则类属性将被完全删除,因为Sightly确实会删除所有带有表达式的属性,这些表达式最终为空或false

以下是Sightly表达式语言的完整文档:

谢谢你,加布里埃尔,你真的把一切都解释清楚了。也感谢您提供的文档。我整个月都在研究这个问题。当我实现它时,css不会显示出来。我给css文件命名。image-reduce.css并向特定选择器添加了宽度缩减。当我选中复选框时,什么都不会发生。当你只输出你的属性时,你是否看到它根据你的对话框而改变?例如:${properties.reduceImage}

老实说,我不明白你想解释什么。可能您的属性被存储为字符串,而不是布尔值。字符串“false”通过Sightly计算为true。如果是这种情况,您必须调整对话框以将值存储为布尔值,或者在读取值时使用Sightly的Use API添加一些逻辑。除此之外,我帮不了你多少忙,但要确保系统地调试整个过程,并确保浏览器或服务器不会缓存任何以前版本的CSS。如何在javascript中组合2条if-Else语句(expr1?(expr2?xx:bb):cc)
<div class="${properties.reduceImage && 'reduce-image'}">
</div>