Узел условного оператора. Представляет тернарный оператор с ветками true и false.
<div> ${context.isLoggedIn ? html`<span>Добро пожаловать, ${context.name}!</span>` : html`<a href="/login">Войти</a>`}</div> Copy
<div> ${context.isLoggedIn ? html`<span>Добро пожаловать, ${context.name}!</span>` : html`<a href="/login">Войти</a>`}</div>
Результат:
{ "tag": "div", "type": "el", "child": [ { "type": "cond", "data": "/context/isLoggedIn", "child": [ { "tag": "span", "type": "el", "child": [ { "type": "text", "data": "/context/name", "expr": "Добро пожаловать, ${[0]}!" } ] }, { "tag": "a", "type": "el", "string": { "href": "/login" }, "child": [ { "type": "text", "value": "Войти" } ] } ] } ]} Copy
{ "tag": "div", "type": "el", "child": [ { "type": "cond", "data": "/context/isLoggedIn", "child": [ { "tag": "span", "type": "el", "child": [ { "type": "text", "data": "/context/name", "expr": "Добро пожаловать, ${[0]}!" } ] }, { "tag": "a", "type": "el", "string": { "href": "/login" }, "child": [ { "type": "text", "value": "Войти" } ] } ] } ]}
<div> ${core.role === 'admin' && core.permissions.includes('write') ? html`<button>Редактировать</button>` : html`<span>Нет прав</span>` }</div> Copy
<div> ${core.role === 'admin' && core.permissions.includes('write') ? html`<button>Редактировать</button>` : html`<span>Нет прав</span>` }</div>
{ "tag": "div", "type": "el", "child": [ { "type": "cond", "data": ["user.role", "user.permissions"], "expr": "${[0]} === 'admin' && ${[1]}.includes('write')", "child": [ { "tag": "button", "type": "el", "child": [ { "type": "text", "value": "Редактировать" } ] }, { "tag": "span", "type": "el", "child": [ { "type": "text", "value": "Нет прав" } ] } ] } ]} Copy
{ "tag": "div", "type": "el", "child": [ { "type": "cond", "data": ["user.role", "user.permissions"], "expr": "${[0]} === 'admin' && ${[1]}.includes('write')", "child": [ { "tag": "button", "type": "el", "child": [ { "type": "text", "value": "Редактировать" } ] }, { "tag": "span", "type": "el", "child": [ { "type": "text", "value": "Нет прав" } ] } ] } ]}
<div> ${core.posts.length > 0 ? html`<ul>${core.posts.map(post => html`<li>${post.title}</li>`)}</ul>` : html`<p>Постов пока нет</p>` }</div> Copy
<div> ${core.posts.length > 0 ? html`<ul>${core.posts.map(post => html`<li>${post.title}</li>`)}</ul>` : html`<p>Постов пока нет</p>` }</div>
{ "tag": "div", "type": "el", "child": [ { "type": "cond", "data": "/core/posts.length", "expr": "${[0]} > 0", "child": [ { "tag": "ul", "type": "el", "child": [ { "type": "map", "data": "/core/posts", "child": [ { "tag": "li", "type": "el", "child": [ { "type": "text", "data": "[item]/title" } ] } ] } ] }, { "tag": "p", "type": "el", "child": [ { "type": "text", "value": "Постов пока нет" } ] } ] } ]} Copy
{ "tag": "div", "type": "el", "child": [ { "type": "cond", "data": "/core/posts.length", "expr": "${[0]} > 0", "child": [ { "tag": "ul", "type": "el", "child": [ { "type": "map", "data": "/core/posts", "child": [ { "tag": "li", "type": "el", "child": [ { "type": "text", "data": "[item]/title" } ] } ] } ] }, { "tag": "p", "type": "el", "child": [ { "type": "text", "value": "Постов пока нет" } ] } ] } ]}
Структура узла:
type
data
expr
child
Тип узла - всегда "cond" для условных операторов
Путь(и) к данным для условия
data: "/context/isLoggedIn" Copy
data: "/context/isLoggedIn"
data: ["/context/isAdmin", "/core/role"] Copy
data: ["/context/isAdmin", "/core/role"]
Optional
Выражение с индексами (если условие сложное)
expr: "${[0]} === 'admin' && ${[1]}.length > 0" Copy
expr: "${[0]} === 'admin' && ${[1]}.length > 0"
Узлы для случая когда условие истинно и ложно
Узел условного оператора. Представляет тернарный оператор с ветками true и false.
Example: Простое условие
Результат:
Example: Сложное условие
Результат:
Example: Условие с проверкой массива
Результат:
Структура узла:
type
- всегда "cond" для условных операторовdata
- путь(и) к данным для условияexpr
- выражение с индексами (если условие сложное)child
- массив из двух элементов: [true-ветка, false-ветка]