#html #conditional-statements #aem #sightly
#HTML #условные операторы #aem #sightly
Вопрос:
Возможно ли с помощью HTL не отображать HTML-элемент, если условие оценивается false
, но все равно отображает вложенное содержимое? Пример:
<A renderIf="${properties.value}">
<B>my content</B>
</A>
Если значение false
равно, то это будет отображаться:
<B>my content</B>
Если значение true
равно, это должно быть отображено:
<A>
<B>my content</B>
</A>
Ответ №1:
Это именно то, что data-sly-unwrap
для:
<A data-sly-unwrap="${!properties.value}">
<B>my content</B>
</A>
(обратите внимание на инвертированное условие в вашем примере, потому что, когда data-sly-unwrap принимает значение true, Он развернет элемент, т. Е. Отобразит только содержимое).
Комментарии:
1. Я чувствую себя слепым из-за того, что не видел этого в документах, спасибо.
Ответ №2:
Отображение на основе условий в HTML возможно с помощью чего-то вызываемого templates
. В основном, что делает шаблон, так это скрывает все, что находится внутри тегов, и отображает их, когда условие оказывается истинным. Javascript
Для достижения этого вам нужна поддержка.
Пример:
function validate() {
if (document.getElementById("userInput").value == "EXAMPLE ANSWER") {
var temp = document.getElementsByTagName("template")[0]; // Give the correct index of template when you have more than 1 template tag
var cloneNode = temp.content.cloneNode(true);
document.body.appendChild(cloneNode);
}
}
<input id="userInput" value="EXAMPLE ANSWER"/>
<button onclick="validate()">Validate</button>
<template>
<h2>That's the right answer!</h2>
</template>
Комментарии:
1. Спасибо, Дипак, за ваше решение. Однако,
unwrap
похоже, делает трюк довольно легко.