Ответ 1
При настройке атрибутов HTML динамически (с выражением), Sightly угадывает ваше намерение упростить запись:
-
Если значение представляет собой пустую строку или это ложное логическое значение, то атрибут полностью удаляется.
Например<p class="${''}">Hi</p>
и<p class="${false}">Hi</p>
отобразить только<p>Hi</p>
. -
Если значение является истинным булевым, то атрибут записывается как логический атрибут HTML (то есть без значения атрибута, например, для отмеченных, выбранных или отключенных атрибутов формы).
Например,<input type="checkbox" checked="${true}">
отображает<input type="checkbox" checked>
.
Затем вы можете использовать два Sightly-оператора для достижения того, что вы хотите (оба работают как в JavaScript): тернарный условный оператор или логический оператор AND (&&
).
Тернарный условный оператор
<ul data-sly-list="${items}" class="${condition1 ? 'selected' : ''}">
<li class="${condition2 ? 'selected' : ''}">
Lots of other markup here
</li>
</ul>
Логический оператор И
Для этого вам также необходимо понять, что, как и в JavaScript, ${value1 && value2}
возвращает value1
, если он ложный (например, false или пустая строка), в противном случае он возвращает value2
:
<ul data-sly-list="${items}" class="${condition1 && 'selected'}">
<li class="${condition2 && 'selected'}">
Lots of other markup here
</li>
</ul>
Как сказано, в обоих примерах атрибут класса будет полностью удален, если соответствующее условие является ложным.