|
@@ -93,7 +93,7 @@ Alpine.js можно использовать и для более серьез
|
|
|
|
|
|
## Изучение
|
|
|
|
|
|
-Всего в Alpine 13 директив:
|
|
|
+Всего в Alpine 14 директив:
|
|
|
|
|
|
| Директива | Описание |
|
|
|
| --- | --- |
|
|
@@ -109,12 +109,12 @@ Alpine.js можно использовать и для более серьез
|
|
|
| [`x-if`](#x-if) | При невыполнении переданного условия полностью удаляет элемент из DOM. Должна использоваться в теге `<template>`. |
|
|
|
| [`x-for`](#x-for) | Создает новые DOM узлы для каждого элемента в массиве. Должна использоваться в теге `<template>`. |
|
|
|
| [`x-transition`](#x-transition) | Директивы для добавления классов различным стадиям перехода (transition) элемента |
|
|
|
-| [`x-spread`](#x-spread) | Позволяет привязать объект директивы Alpine к элементу для более удобного повторного использования |
|
|
|
+| [`x-spread`](#x-spread) | Позволяет вам привязывать объект с директивами Alpine к элементам, улучшая переиспользуемость. |
|
|
|
| [`x-cloak`](#x-cloak) | Удаляется при инициализации Alpine. Полезна для скрытия DOM до инициализации. |
|
|
|
|
|
|
-И 6 волшебных свойств (magic properties):
|
|
|
+И 6 магических свойств (magic properties):
|
|
|
|
|
|
-| Волшебное свойство | Описание |
|
|
|
+| Магическое свойство | Описание |
|
|
|
| --- | --- |
|
|
|
| [`$el`](#el) | Получить DOM-узел корневого компонента. |
|
|
|
| [`$refs`](#refs) | Получить DOM-элементы компонента, отмеченные `x-ref`. |
|
|
@@ -301,6 +301,12 @@ Alpine.js можно использовать и для более серьез
|
|
|
|
|
|
Если в этом выражении меняются какие-либо данные, другие элементы, "привязанные" к этим данным, будут обновлены.
|
|
|
|
|
|
+> Замечание: Вы также можете задать имя JS-функции.
|
|
|
+
|
|
|
+**Пример:** `<button x-on:click="myFunction"></button>`
|
|
|
+
|
|
|
+Это равноценно: `<button x-on:click="myFunction($event)"></button>`
|
|
|
+
|
|
|
**Модификатор `keydown`**
|
|
|
|
|
|
**Пример:** `<input type="text" x-on:keydown.escape="open = false">`
|
|
@@ -525,12 +531,12 @@ Alpine предлагает 6 разных transition-директив для д
|
|
|
---
|
|
|
|
|
|
### `x-spread`
|
|
|
-**Example:**
|
|
|
+**Пример:**
|
|
|
```html
|
|
|
<div x-data="dropdown">
|
|
|
- <button x-spread="trigger">Open Dropdown</button>
|
|
|
+ <button x-spread="trigger">Открыть дропдаун</button>
|
|
|
|
|
|
- <span x-spread="dialogue">Dropdown Contents</span>
|
|
|
+ <span x-spread="dialogue">Содержимое дропдауна</span>
|
|
|
</div>
|
|
|
|
|
|
<script>
|
|
@@ -555,11 +561,11 @@ Alpine предлагает 6 разных transition-директив для д
|
|
|
</script>
|
|
|
```
|
|
|
|
|
|
-`x-spread` позволяет извлекать элементы привязок в объекты многоразового использования.
|
|
|
+`x-spread` позволяем вам вынести привязки Alpine из элементов в переиспользуемый объект.
|
|
|
|
|
|
-Ключами объекта являются директивы (любые, включая модификаторы), а значения — колбэками, которые будет оценивать Alpine.
|
|
|
+Ключи объекта – это директивы (любые, в том числе и с модификаторами), а значения – колбэки, с которыми будет работать Alpine.
|
|
|
|
|
|
-> Примечание: Единственная аномалия с x-spread — при использование с `x-for`. В это случае вы должны вернуть строку нормального выражения из колбэка. Например: `['x-for']() { return 'item in items' }`.
|
|
|
+> Замечание: Единственная особенность при работе с x-spread – это то, как обрабатывается `x-for`. Когда директива, используемая в x-spread – это `x-for`, в колбэке необходимо возвращать выражение в виде строки. К примеру: `['x-for']() { return 'item in items' }`.
|
|
|
|
|
|
---
|
|
|
|
|
@@ -574,7 +580,9 @@ Alpine предлагает 6 разных transition-директив для д
|
|
|
</style>
|
|
|
```
|
|
|
|
|
|
-### Magic Properties
|
|
|
+### Магические свойства
|
|
|
+
|
|
|
+> Не считая `$el`, магические свойства **не доступны внутри `x-data`**, так как компонент еще не инициализирован.
|
|
|
|
|
|
---
|
|
|
|
|
@@ -588,6 +596,12 @@ Alpine предлагает 6 разных transition-директив для д
|
|
|
|
|
|
`$el` – магическое свойство, которое используется для получения корневого компонента DOM-узла.
|
|
|
|
|
|
+> Замечание: Свойство $event доступно только в DOM-выражениях.
|
|
|
+
|
|
|
+Если вам нужен доступ к $event внутри JS-функции, вы можете передать его напрямую:
|
|
|
+
|
|
|
+`<button x-on:click="myFunction($event)"></button>`
|
|
|
+
|
|
|
### `$refs`
|
|
|
**Пример:**
|
|
|
```html
|
|
@@ -619,6 +633,34 @@ Alpine предлагает 6 разных transition-директив для д
|
|
|
</div>
|
|
|
```
|
|
|
|
|
|
+**Примечание по распространению событий (event propagation)**
|
|
|
+
|
|
|
+Когда вам нужно перехватить событие, вызванное из узла на том же уровне вложенности, вам нужно использовать модификатор [`.window`](https://github.com/alpinejs/alpine/blob/master/README.ru.md#x-on):
|
|
|
+
|
|
|
+**Неправильный пример:**
|
|
|
+
|
|
|
+```html
|
|
|
+<div x-data>
|
|
|
+ <span @custom-event="console.log($event.detail.foo)"></span>
|
|
|
+ <button @click="$dispatch('custom-event', { foo: 'bar' })">
|
|
|
+<div>
|
|
|
+```
|
|
|
+
|
|
|
+> Это не будет работать, потому что, когда вызывается `custom-event`, он сразу всплывает ([event bubbling](https://en.wikipedia.org/wiki/Event_bubbling)) к родителю `div`.
|
|
|
+
|
|
|
+**Диспатч для компонентов**
|
|
|
+
|
|
|
+Вы также можете использовать предыдущую технику для общения компонентов друг с другом:
|
|
|
+
|
|
|
+**Пример:**
|
|
|
+
|
|
|
+```html
|
|
|
+<div x-data @custom-event.window="console.log($event.detail)"></div>
|
|
|
+
|
|
|
+<button x-data @click="$dispatch('custom-event', 'Hello World!')">
|
|
|
+<!-- При нажатии в консоль выведется "Hello World!". -->
|
|
|
+```
|
|
|
+
|
|
|
`$dispatch` – это сокращение для создания `CustomEvent` и его вызова (диспатча) с помощью `.dispatchEvent()`. Существует множество сценариев использования передачи данных между компонентами с помощью пользовательских событий. [Пройдите по этой ссылке](https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events), чтобы узнать больше о системе, лежащей в основе `CustomEvent` в браузерах.
|
|
|
|
|
|
Любые данные, переданные как второй параметр в `$dispatch('some-event', { some: 'data' })`, становятся доступны через свойство "detail" события: `$event.detail.some`. Добавление событию пользовательских данных через свойство `.detail` – стандартная практика для `CustomEvent` в браузерах. [Подробнее здесь](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail).
|
|
@@ -634,6 +676,12 @@ Alpine предлагает 6 разных transition-директив для д
|
|
|
</div>
|
|
|
```
|
|
|
|
|
|
+> Замечание: Свойство $dispatch доступно только в DOM-выражениях.
|
|
|
+
|
|
|
+Если вам нужен доступ к $dispatch внутри JS-функции, вы можете передать его напрямую:
|
|
|
+
|
|
|
+`<button x-on:click="myFunction($dispatch)"></button>`
|
|
|
+
|
|
|
---
|
|
|
|
|
|
### `$nextTick`
|