Spec-Zone.ru › htmx

The alpine-morph Расширение

Alpine.js теперь имеет лёгкий плагин morph, и это расширение позволяет использовать его в качестве механизма переключения в htmx, что необходимо для сохранения состояния Alpine, когда весь компонент Alpine заменяется htmx.

Установка

<script src="https://unpkg.com/htmx.org/dist/ext/alpine-morph.js"></script>

Использование

<header>
  <script src="https://unpkg.com/htmx.org@latest"></script>
  <script src="https://unpkg.com/htmx.org@latest/dist/ext/alpine-morph.js"></script>
<!-- Alpine Plugins -->
  <script defer src="https://unpkg.com/@alpinejs/morph@3.x.x/dist/cdn.min.js"></script>
<!-- Alpine Core -->
  <script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
</header>
<body>
  <div hx-target="this" hx-ext="alpine-morph" hx-swap="morph">
      <div x-data="{ count: 0, replaced: false,
                     message: 'Change me, then press the button!' }">
          <input type="text" x-model="message">
          <div x-text="count"></div>
          <button x-bind:style="replaced && {'backgroundColor': '#fecaca'}"
x-on:click="replaced = true; count++"
hx-get="/swap">
            Morph
          </button>
      </div>
  </div>
</body>

В приведённом выше примере все состояния Alpine x-data (count, replaced и message) сохраняются, даже если весь компонент Alpine заменяется.

ПРИМЕЧАНИЕ: /swap ответ из приведённого выше примера должен возвращать фактический элемент, который заменяется (это <div hx-target="this"... элемент).

Licensed under the Zero-Clause BSD License.
https://htmx.org/extensions/alpine-morph/

Spec-Zone.ru

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