1

我使用htmx通过html-over-the-wire更新我的页面片段

这工作正常:

  <table>
    <tr id="offer_2">
     <td>Sun 27.12</td>
     <td>Spinach Lasagna</td>
     <td>5.00€&lt;/td>
     <td>1</td>
     <td>
      <button id="2" hx-post="/offer/2/add_offer_to_order" 
         hx-target="#offer_2" hx-swap="outerHTML">+</button>
      <button id="2" hx-post="/offer/2/delete_offer_from_order" 
         hx-target="#offer_2" hx-swap="outerHTML">-</button>
     </td> 
    </tr> 
   </table>

.... 用户按下+-按钮后,相应的行将使用来自服务器的新版本进行更新。

我想给用户一些视觉反馈:

  • 在 ajax 调用期间应禁用按钮
  • 在更新的行上方应该有一个沙漏。
4

1 回答 1

2

您可以使用 hx-indicator 属性来完成此操作:

https://htmx.org/attributes/hx-indicator/

这将在 htmx 请求运行时将类“htmx-request”添加到指定元素。

所以你可能会做这样的事情(利用 htmx 中的“最接近”的语法):

<td hx-indicator="closest tr">
    <button id="2" hx-post="/offer/2/add_offer_to_order" 
        -target="#offer_2" hx-swap="outerHTML">+</button>
    <button id="2" hx-post="/offer/2/delete_offer_from_order" 
        hx-target="#offer_2" hx-swap="outerHTML">-</button>
</td>

然后在运行 htmx 请求时为表格行创建 CSS 样式:

tr.htmx-request {
    transition: all 500ms ease-in;
    background-color:red; // for example
}

请注意,我在这里仅使用红色背景作为示例,以产生戏剧性的效果。你肯定会想要一些不同的样式。

于 2020-12-28T15:01:24.457 回答