Булевы атрибуты — это особый тип свойств в HTML и веб-компонентах, который может принимать только два состояния: true или false. В контексте FAST Element они играют ключевую роль при связывании данных и управлении поведением компонентов.
В FAST Element булевы атрибуты определяются с помощью декоратора
@attr или через статическое свойство
@attr({ mode: 'boolean' }). Основное отличие от обычных
строковых атрибутов заключается в том, что наличие атрибута на элементе
интерпретируется как true, а его отсутствие — как
false.
Пример:
import { FASTElement, attr } from "@microsoft/fast-element";
export class ToggleButton extends FASTElement {
@attr({ mode: 'boolean' })
active;
}
В этом примере атрибут active будет автоматически
преобразован в булево значение.
<toggle-button active></toggle-button>
Эквивалентно:
toggleButton.active === true;
Если атрибут не указан:
<toggle-button></toggle-button>
То значение будет:
toggleButton.active === false;
Наличие атрибута = true, отсутствие = false В отличие от строковых атрибутов, где значение может быть произвольным текстом, булев атрибут полностью определяется фактом наличия атрибута на элементе.
Автоматическая синхронизация со свойством Изменение свойства в JavaScript автоматически обновляет атрибут в DOM:
toggleButton.active = false;
// HTML станет <toggle-button></toggle-button>
toggleButton.active = true;
// HTML станет <toggle-button active></toggle-button>Привязка к шаблону В шаблонах FAST можно использовать булевы атрибуты для условного рендеринга или динамического управления классами:
import { html } from "@microsoft/fast-element";
const template = html<ToggleButton>`
<button class="${x => x.active ? 'on' : 'off'}">
${x => x.active ? 'Включено' : 'Выключено'}
</button>
`;
В этом случае изменение свойства active автоматически
изменяет текст и класс кнопки.
По умолчанию @attr() создаёт строковый атрибут. Чтобы
включить булевое поведение, используется параметр
mode: 'boolean':
@attr({ mode: 'boolean' })
disabled;
В результате:
<my-element disabled></my-element> <!-- disabled = true -->
<my-element></my-element> <!-- disabled = false -->
Преобразование работает также при установке через Jav * aScript: любое
«истинное» значение (true, "true",
1) устанавливает атрибут, а любое «ложное» значение
(false, null, undefined,
0) удаляет атрибут.
Булевы атрибуты можно комбинировать с обычными строковыми и числовыми атрибутами. FAST Element корректно обрабатывает типы, обеспечивая строгую синхронизацию между DOM и свойствами:
@attr
label;
@attr({ mode: 'boolean' })
checked;
<checkbox-component label="Принять условия" checked></checkbox-component>
Свойство checked становится true, а
label хранит строку "Принять условия".
checked, disabled, active,
visible.Булевы атрибуты в FAST Element обеспечивают чистый и предсказуемый способ управления состояниями компонентов, сохраняя синхронность между свойствами и DOM, а также упрощая создание реактивных интерфейсов.