Spec-Zone.ru › Phoenix

Атрибуты HTML phx-*

Исходный код

Краткое описание специальных атрибутов HTML, используемых в шаблонах Phoenix LiveView. Каждый атрибут связан со своей документацией, где приведены дополнительные сведения.

Обработчики событий

Значениями атрибутов могут быть:

  • Имя события для серверного обратного вызова handle_event
  • Команды JS, выполняемые непосредственно на клиенте

Используйте атрибуты phx-value-*, чтобы передавать параметры на сервер.

Используйте phx-debounce и phx-throttle, чтобы управлять частотой событий.

Нажатие

Атрибуты
phx-click phx-click-away

Фокус

Атрибуты
phx-blur phx-focus
phx-window-blur phx-window-focus

Клавиатура

Атрибуты
phx-keydown phx-keyup
phx-window-keydown phx-window-keyup

Используйте атрибут phx-key, чтобы отслеживать нажатия определённых клавиш.

Прокрутка

Атрибуты
phx-viewport-top phx-viewport-bottom

Пример

lib/hello_web/live/hello_live.html.heex

<button type="button" phx-click="click" phx-value-user={@current_user.id}>Click Me</button>
<button type="button" phx-click={JS.toggle(to: "#example")}>Toggle</button>

Обработчики событий формы

Для элементов <form>

Атрибут Значение
phx-change Имя события или команды JS
phx-submit Имя события или команды JS
phx-auto-recover Имя события, команды JS или "ignore"
phx-trigger-action Наличие (или true) отключает LiveView и отправляет форму
phx-no-unused-field Наличие (или true) отключает отчёт о неиспользуемых полях формы

Для элементов <button>

Атрибут Значение
phx-disable-with Текст, отображаемый во время отправки события

Пример формы

lib/hello_web/live/hello_live.html.heex

<form id="my-form" phx-change="validate" phx-submit="save">
  <input type="text" name="name" phx-debounce="500" phx-throttle="500" />
  <button type="submit" phx-disable-with="Saving...">Save</button>
</form>

Жизненный цикл подключения сокета

Атрибут Значение
phx-connected Команды JS, выполняемые после подключения LiveSocket
phx-disconnected Команды JS, выполняемые после отключения LiveSocket

lib/hello_web/live/hello_live.html.heex

<div id="status" class="hidden" phx-disconnected={JS.show()} phx-connected={JS.hide()}>
  Attempting to reconnect...
</div>

Жизненный цикл элементов DOM

Атрибут Значение
phx-mounted Команды JS, выполняемые после монтирования элемента
phx-remove Команды JS, выполняемые во время удаления элемента
phx-update "replace" (по умолчанию), "stream" или "ignore" — настраивает поведение обновления DOM

lib/hello_web/live/hello_live.html.heex

<div
  id="iframe-container"
  phx-mounted={JS.transition("animate-bounce", time: 2000)}
  phx-remove={JS.hide(transition: {"transition-all transform ease-in duration-200", "opacity-100", "opacity-0"})}
>
  <button type="button" phx-click={JS.exec("phx-remove", to: "#iframe-container")}>Hide</button>
  <iframe id="iframe" src="https://example.com" phx-update="ignore"></iframe>
</div>

Клиентские хуки

Атрибут Значение
phx-hook Имя ранее определённого JavaScript-хука в LiveSocket

Клиентские хуки обеспечивают двустороннюю связь между клиентом и сервером с помощью this.pushEvent и this.handleEvent для отправки и получения событий.

lib/hello_web/live/hello_live.html.heex

<div id="example" phx-hook="Example">
  <h1>Events</h1>
  <ul id="example-events"></ul>
</div>

assets/js/app.js

let Hooks = {}
Hooks.Example = {
  // Callbacks
  mounted()      { this.appendEvent("Mounted") },
  beforeUpdate() { this.appendEvent("Before Update") },
  updated()      { this.appendEvent("Updated") },
  destroyed()    { this.appendEvent("Destroyed") },
  disconnected() { this.appendEvent("Disconnected") },
  reconnected()  { this.appendEvent("Reconnected") },

  // Custom Helper
  appendEvent(name) {
    console.log(name)
    let li = document.createElement("li")
    li.innerText = name
    this.el.querySelector("#example-events").appendChild(li)
  }
}

let liveSocket = new LiveSocket("/live", Socket, {hooks: Hooks})

Отслеживание статических ресурсов

Атрибут Значение
phx-track-static Отсутствует; используется для пометки статических файлов

lib/hello_web/components/layouts/root.html.heex

<link phx-track-static rel="stylesheet" href={~p"/assets/app.css"} />
<script defer phx-track-static type="text/javascript" src={~p"/assets/app.js"}></script>

Форматирование и синтаксис

Атрибут Значение
phx-no-format Наличие атрибута (или true) отключает автоматическое форматирование HEEx для блока элемента
phx-no-curly-interpolation Наличие атрибута (или true) отключает интерполяцию {...} внутри элемента, требуя синтаксис <%= ... %>
← Предыдущая страница Синхронизация изменений и оптимистичные интерфейсы

Пакет Hex Предварительный просмотр Hex (текущий файл) Просмотреть llms.txt Скачать версию ePub

Создано с помощью ExDoc (v0.40.3) для языка программирования Elixir

© 2014 Chris McCord
Licensed under the MIT License.
https://phoenix-live-view.hexdocs.pm/html-attrs.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API