Изменение триггера по значению изменения поля формы - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть форма просмотра в реальном времени и текстовый ввод:

<%= search_input :filter, :search, id: "filter_search_field", class: "input", placeholder: "Search", value: @search_field, "phx-debounce": "300"%>

Теперь есть момент, когда я хочу очистить это поле программно, я делаю это, изменяя назначение:

{:noreply, assign(socket, :search_field, "")}

Проблема в том, что событие phx-change, назначенное для формы, не вызывается.

Я также пытался создать JS ловушку и изменить значение поля из ловушки, однако это также не создает событие.

1 Ответ

0 голосов
/ 06 апреля 2020

Как оказалось, изменяющегося значения недостаточно для запуска изменения, должно выдаваться событие change, при вводе пользователем это событие инициируется. Дополнительную информацию можно найти здесь .

. Есть несколько подходов к обработке этого сейчас:

  1. Создание перехвата для события входа и выброса при изменении входа. Недостатком этого является то, что вы получите повторяющиеся события при вводе пользователем.
  2. Добавление ловушки к кнопке (в моем случае у меня есть кнопка сброса). Отсюда вы можете запустить событие вручную.

То, что я закончил, немного отличается. Hooks имеет метод с именем pushEvent, поэтому я использовал его для запуска handle_event:

Hooks.TestHook = {
  updated(){
    this.pushEvent("filter", {_target: ["filter", "search"], filter: {search: ""}});
  }
}

Вариант с созданием пользовательского события change можно найти здесь .

...