You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AEM中如何根据布尔条件动态显示/隐藏HTML自定义属性

问题场景

假设有一个名为isDisabled的布尔参数,需求逻辑为:

  • 当isDisabled值为true时,为元素添加自定义HTML属性data-enable-hide
  • 当isDisabled值为false时,不渲染该属性

最初的实现方案通过data-sly-test写了两个重复的DOM分支:

<div data-sly-test="${model.isDisabled}">
    <div class="container" data-enable-hide>
          Hello World
    </div>
</div>
<div data-sly-test="${!model.isDisabled}">
    <div class="container">
          Hello World
    </div>
</div>

该方案虽然能实现预期效果,但内部HTML完全重复,两个分支的唯一差异仅为是否携带目标属性,代码冗余、后续维护成本高。

实现方案

AEM的HTL(Sightly)语法原生支持属性级别的条件渲染,不需要编写重复DOM:当绑定到HTML属性上的HTL表达式返回布尔值false时,该属性会被直接从最终输出的DOM中移除,不会被渲染。

针对该需求只需要写一次DOM结构即可:

<div class="container" data-enable-hide="${model.isDisabled}">
    Hello World
</div>

渲染逻辑完全符合预期:

  • 当model.isDisabled为true时,输出带data-enable-hide属性的元素
  • 当model.isDisabled为false时,输出不带该属性的元素

这个语法对所有HTML属性通用,不管是原生属性还是自定义属性,都可以用这种方式直接控制是否渲染,不需要额外嵌套分支标签。

内容的提问来源于stack exchange,提问作者superninja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 18:33:24