事件 - htmx:beforeSwap
此事件在任何新内容交换到 DOM之前触发。如果取消此事件,则不会发生交换。
你可以通过修改事件详细信息的和属性来修改 shouldSwap 默认交换行为。有关更多详细信息,请参阅有关配置交换 target 的文档。
事件参数
- detail.elt - 发送请求的元素
- detail.xhr - XMLHttpRequest
- detail.requestConfig - AJAX请求的配置
- detail.shouldSwap - 是否交换内容(非 200 响应代码的默认值为 false )
- detail.ignoreTitle - 如果为 true,响应中的任何标题标签是否将被忽略
- detail.target - 交换的目标
因为 htmx 在默认情况下遇到非 200 的响应码不会发生交换,但有时候想要把服务器响应的错误信息展示在目标元素中时,就可以通过响应该事件,修改 event.detail.shouldSwap 的值来把错误信息展示出来。
示例代码
<button type="button" hx-get="/test/error"
hx-on:htmx:before-swap="event.detail.shouldSwap = true;"
>搜索</button>
/test/error 会返回一个 500 的错误及错误信息:This is a test error response!,默认情况下页面不会展示任何内容,但以上代码拦截并响应了 beforeSwap 事件,并把 shouldSwap 的值设为了 true,所以点击以上代码中的按钮后,按钮的文本会变为 “This is a test error response!”。