์ด ์์๋ ์ฌ์ฉ์๊ฐ ํ ์คํธ๋ฅผ ์ ๋ ฅํ ๋ ์ฐ๋ฝ์ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ฒ์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค.
๋จผ์ , ๊ฒ์ ์ ๋ ฅ ํ๋์ ๋น ํ ์ด๋ธ์ ์ค์ ํฉ๋๋ค:
<h3>
Search Contacts
<span class="htmx-indicator">
<img src="/img/bars.svg"/> Searching...
</span>
</h3>
<input class="form-control" type="search"
name="search" placeholder="Begin Typing To Search Users..."
hx-post="/search"
hx-trigger="input changed delay:500ms, search"
hx-target="#search-results"
hx-indicator=".htmx-indicator">
<table class="table">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
</tr>
</thead>
<tbody id="search-results">
</tbody>
</table>
์ด ์
๋ ฅ ํ๋๋ input
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ /search
๋ก POST
์์ฒญ์ ๋ณด๋ด๊ณ ,
ํ
์ด๋ธ์ ๋ณธ๋ฌธ์ ๋ฐํ๋ ๋ด์ฉ์ผ๋ก ์ค์ ํฉ๋๋ค. keyup
์ด๋ฒคํธ๋ ์ฌ์ฉํ ์ ์์ง๋ง, ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ก ํ
์คํธ๋ฅผ ๋ถ์ฌ๋ฃ๋ ๋ฑ์ ๋นํค๋ณด๋ ๋ฐฉ๋ฒ์ผ๋ก ํ
์คํธ๋ฅผ ์
๋ ฅํ ๋๋ ํธ๋ฆฌ๊ฑฐ๋์ง ์์ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ delay:500ms
์์ ์๋ฅผ ํธ๋ฆฌ๊ฑฐ์ ์ถ๊ฐํ์ฌ ์ฌ์ฉ์๊ฐ ์
๋ ฅ์ ๋ฉ์ถ ๋๊น์ง ์ฟผ๋ฆฌ ์ ์ก์ ์ง์ฐ์ํต๋๋ค.
๋ํ, changed
์์ ์๋ฅผ ํธ๋ฆฌ๊ฑฐ์ ์ถ๊ฐํ์ฌ ์ฌ์ฉ์๊ฐ ์
๋ ฅ ๊ฐ์ ๋ณํ๋ฅผ ์ฃผ์ง ์์์ ๋(์: ํ์ดํ ํค๋ฅผ ๋๋ฅด๊ฑฐ๋ ๋์ผํ ๊ฐ์ ๋ถ์ฌ๋ฃ์์ ๋) ์๋ก์ด ์ฟผ๋ฆฌ๊ฐ ์ ์ก๋์ง ์๋๋ก ํฉ๋๋ค.
search
ํ์
์ ์
๋ ฅ ํ๋๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์
๋ ฅ ํ๋์ ์
๋ ฅ์ ์ง์ธ ์ ์๋ x
๋ฒํผ์ด ํ์๋ฉ๋๋ค.
์
๋ ฅ์ ์ง์ ์ ๋ ์๋ก์ด POST
์์ฒญ์ด ํธ๋ฆฌ๊ฑฐ๋๋๋ก ํ๊ธฐ ์ํด ๋ค๋ฅธ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. ํธ๋ฆฌ๊ฑฐ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ผํ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
search
ํธ๋ฆฌ๊ฑฐ๋ ํ๋๋ฅผ ์ง์ ์ ๋ ์คํ๋๋ฉฐ, ์ํฐ ํค๋ฅผ ๋๋ฌ 500ms์ input
์ด๋ฒคํธ ์ง์ฐ์ ๋ฌด์ํ ์๋ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, hx-indicator
์์ฑ์ ์ฌ์ฉํ์ฌ ๊ฒ์์ด ์งํ ์ค์ผ ๋ ์ธ๋์ผ์ดํฐ๋ฅผ ํ์ํฉ๋๋ค.