hx-swap-oob

hx-swap-oob 속성은 μ‘λ‹΅μ˜ 일뢀 μ½˜ν…μΈ λ₯Ό λŒ€μƒ μ™ΈλΆ€μ˜ DOM μ–΄λ”˜κ°€μ— κ΅μ²΄ν•˜λ„λ‘ 지정할 수 있게 ν•©λ‹ˆλ‹€. μ΄λŠ” β€œOut of Bandβ€œλ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 λ‹€λ₯Έ μš”μ†Œ μ—…λ°μ΄νŠΈμ— λŒ€ν•œ 응닡에 νŽΈμŠΉν•˜μ—¬ μ—…λ°μ΄νŠΈλ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒ 응닡 HTML을 λ³΄μ„Έμš”:

<div>
 ...
</div>
<div id="alerts" hx-swap-oob="true">
    Saved!
</div>

첫 번째 divλŠ” 일반적인 λ°©μ‹μœΌλ‘œ λͺ©ν‘œ λŒ€μƒμ„ κ΅μ²΄ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 두 번째 divλŠ” IDκ°€ alerts인 μžˆλŠ” μš”μ†Œλ₯Ό κ΅μ²΄ν•˜λ©°, κΈ°μ‘΄ ꡐ체 λͺ©ν‘œ λŒ€μƒμ— ν¬ν•¨λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

hx-swap-oob의 값은 λ‹€μŒκ³Ό 같을 수 μžˆμŠ΅λ‹ˆλ‹€:

값이 true λ˜λŠ” outerHTML(이와 λ™λ“±ν•œ κ°’)이면 μš”μ†ŒλŠ” 인라인으둜 λ°”λ€λ‹ˆλ‹€.

swap 값이 μ§€μ •λ˜λ©΄ ν•΄λ‹Ή ꡐ체 μ „λž΅μ΄ μ‚¬μš©λ©λ‹ˆλ‹€.

μ„ νƒμžκ°€ μ§€μ •λ˜λ©΄ ν•΄λ‹Ή μ„ νƒμžμ™€ μΌμΉ˜ν•˜λŠ” λͺ¨λ“  μš”μ†Œκ°€ κ΅μ²΄λ©λ‹ˆλ‹€. 그렇지 μ•Šμ€ 경우 μƒˆ μ½˜ν…μΈ μ™€ μΌμΉ˜ν•˜λŠ” IDλ₯Ό 가진 μš”μ†Œκ°€ λ°”λ€λ‹ˆλ‹€.

Troublesome Tables

template νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ HTML 사양에 따라 DOMμ—μ„œ λ…λ¦½μ μœΌλ‘œ μ‘΄μž¬ν•  수 μ—†λŠ” μš”μ†Œ μœ ν˜• (<tr>, <td>, <th>, <thead>, <tbody>, <tfoot>, <colgroup>, <caption> 및 <col>)을 μΊ‘μŠν™”ν•  수 μžˆλ‹€λŠ” 점을 μ°Έκ³ ν•˜μ„Έμš”.

λ‹€μŒμ€ μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ ν…Œμ΄λΈ” ν–‰μ˜ out of bandκ°€ μΊ‘μŠν™”λœ μ˜ˆμ œμž…λ‹ˆλ‹€:

<div>
    ...
</div>
<template>
    <tr id="row" hx-swap-oob="true">
        ...
    </tr>
</template>

μ΄λŸ¬ν•œ template νƒœκ·ΈλŠ” νŽ˜μ΄μ§€μ˜ μ΅œμ’… μ½˜ν…μΈ μ—μ„œ μ œκ±°λœλ‹€λŠ” 점에 μœ μ˜ν•˜μ„Έμš”.

Nested OOB Swaps

기본적으둜, 응닡 λ‚΄ 어디에든 hx-swap-oob= 속성이 μžˆλŠ” λͺ¨λ“  μš”μ†ŒλŠ” out of band ꡐ체 λ™μž‘μœΌλ‘œ μ²˜λ¦¬λ©λ‹ˆλ‹€. μ΄λŠ” μš”μ†Œκ°€ μ£Όμš” 응닡 μš”μ†Œ 내에 μ€‘μ²©λœ κ²½μš°λ„ ν¬ν•¨λ©λ‹ˆλ‹€. μ΄λŠ” 쑰각(fragment)을 oob-swap λŒ€μƒ 및 더 큰 쑰각의 μΌλΆ€λ‘œ μž¬μ‚¬μš©ν•  수 μžˆλŠ” template fragments을 μ‚¬μš©ν•  λ•Œ λ¬Έμ œκ°€ 될 수 μžˆμŠ΅λ‹ˆλ‹€. 더 큰 쑰각이 μ£Όμš” 응닡인 경우 λ‚΄λΆ€ 쑰각도 μ—¬μ „νžˆ oob swap으둜 μ²˜λ¦¬λ˜μ–΄μ„œ DOMμ—μ„œ μ œκ±°λ©λ‹ˆλ‹€.

이 λ™μž‘μ€ htmx.config.allowNestedOobSwapsλ₯Ό false둜 μ„€μ •ν•˜μ—¬ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 ꡬ성 μ˜΅μ…˜μ΄ false이면 μš”μ†Œκ°€ κΈ°λ³Έ 응닡 μš”μ†Œμ— μΈμ ‘ν•œ κ²½μš°μ—λ§Œ OOB ꡐ체가 처리되고, λ‹€λ₯Έ 곳의 OOB ꡐ체은 λ¬΄μ‹œλ˜κ³  OOB ꡐ체 κ΄€λ ¨ 속성이 μ œκ±°λ©λ‹ˆλ‹€.

Notes