Захват событий на мифриле? - PullRequest
0 голосов
/ 20 октября 2019

нет записи событий? Я бы хотел установить порядок обработки событий в компоненте автозаполнения, событие onblur срабатывает до щелчка по элементу в списке, в результате чего список переключается дважды и остается видимым после мерцания.

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Привязка событий в Mithril - это очень простая удобная функция, которая заменяет событие, используя стандартное отсутствие захвата addEventListener, и автоматически ставит в очередь перерисовку при разрешении (это в отличие от других библиотек представлений, таких как React, где событиепривязка - это сложная, самоуверенная система).

Когда вы хотите сделать что-то по-другому, Mithril позволяет очень легко перейти на прямой доступ к DOM, предоставляя вам доступ к встроенным методам жизненного цикла. В частности, метод oncreate позволит вам связывать события, однако вы выбираете .

m('div', {
  // this
  onclick : e => {},
  // is the same as this
  oncreate: vnode => {
    vnode.dom.addEventListener('click', e => {
      m.redraw()
    })
  },
})

. Имейте в виду, что событие click всегда разрешается после blur, даже еслипервый захватывает, а второй пузырится - вам может понадобиться использовать mousedown вместо этого. Вот демонстрация, показывающая, как связывать события захвата и регистрировать последовательность различных событий .

0 голосов
/ 20 октября 2019

Очевидно, что захват не поддерживается, несмотря на то, что Google показал метод m.capture много лет назад. Вы просто регистрируете eventListener с истинным параметром для его захвата, и я предполагаю вызов m.redraw () в конце обработчика.

...