1

我在 LiveView 中处理表单上的 phx 更改时遇到问题。我正在创建一个用于过滤对象列表的搜索字段。该字段还有一个重置按钮。它看起来像这样:

<form phx-change="search-change" phx-submit="search-change">
  <input type="text" name="search" value="<%= @search_list %>" placeholder="Search..." phx-debounce="500" />
  <button type="button" phx-click="search-change" phx-value-search="">X</button>
</form>

搜索字段处理程序在 liveview 中,而不是在 liveview 组件中。Handler 是这样实现的:

@impl true
def handle_event("search-change", _, socket) do
  IO.inspect("Searching...")
  {:noreply, socket}
end

当我从页面开始或刷新对象列表和搜索字段所在的位置时,一切都按预期工作。但是当我 live_redirect 到另一个页面然后 live_redirect 返回时,表单不再抛出事件。重置按钮仍然有效并引发事件。这里可能是什么问题?

4

2 回答 2

0

我认为这不是解决你的问题,而是先尝试分开。

例如,您 phx-submit、phx-change、phx-click,所有这些都是事件,您使用类似的名称调用所有这些事件,即 search-change。我认为这是关于基本模式匹配的,很难检查位置在哪里。

尝试先使您的代码干净,然后将 live_redirect 的问题一起解决

于 2021-04-21T17:17:45.733 回答
0

我找到了解决方案。该表单位于表格内的 tbody 标记内,这导致了该错误。将表格移到外面固定它。

于 2021-04-22T17:45:47.680 回答