如何在AEM中使用HTL有条件地添加数据属性?
我已经看到了大量与条件属性相关的示例,它们都谈到了这一点:如何在AEM中使用HTL有条件地添加数据属性?,aem,sightly,Aem,Sightly,我已经看到了大量与条件属性相关的示例,它们都谈到了这一点: <img data-srcset="${myModel.isPrimaryImg ? '/img/image1.jpg': '/img/image2.jpg'}" > 这要么导致 <img data-srcset="/img/image1.jpg" > <img data-srcset= "/img/common-image.jpg"
<img data-srcset="${myModel.isPrimaryImg ? '/img/image1.jpg': '/img/image2.jpg'}" >
这要么导致
<img data-srcset="/img/image1.jpg" >
<img data-srcset= "/img/common-image.jpg" >
或
取决于${myModel.isPrimaryImg}是否分别为真或假
这不是我想要的,上面的示例处理属性的“value”部分
我想在属性的“Key”部分设置ternery条件,如下所示:
<img ${myModel.isTrue ?'data-srcset=' : 'srcset='} = "/img/common-image.jpg" >
我希望它能呈现
或者
或
在我记忆中,这是使用JSP实现的
我希望它能够正常工作的唯一方法是添加如下条件:
<img data-sly-test="${myModel.isTrue}" data-srcset = "/img/common-image.jpg" ><!-- When TRUE -->
<img data-sly-test="${!myModel.isTrue}" srcset = "/img/common-image.jpg" >!-- When FALSE -->
!-- 当为FALSE时-->
但这需要两个完整的标签,每个条件一个
是否有更好的方法将数据属性键而非值的三元条件放入HTL中?
我有很多这样的标签,所以我在想,如果我可以只在一行中适应条件,否则我会将标签数量增加一倍,每个标签将包含一个基于标志值的属性,一个为真,一个为假条件。您可以:
data-sly-attribute
,并通过使用对象将属性显示为映射。然后可以控制使用对象中的贴图关键点
这将使您的HTL脚本HTML保持有效。这将导致两个数据属性都呈现一个填充一个空。我希望一次只存在一个属性。@Oliver,正如我在规范中所写和记录的那样,空属性被HTL.works删除。这就是我所做的<代码>标题
<img srcset= "/img/common-image.jpg" >
<img data-sly-test="${myModel.isTrue}" data-srcset = "/img/common-image.jpg" ><!-- When TRUE -->
<img data-sly-test="${!myModel.isTrue}" srcset = "/img/common-image.jpg" >!-- When FALSE -->
<img data-srcset="${myModel.isTrue ? '/img/common-image.jpg' : ''}" srcset="${!myModel.isTrue ? '/img/common-image.jpg' : ''}">