Я перевожу приложение на основе JQuery на Mithril. Это приложение использует Dragula, чтобы разрешить перетаскивание для изменения порядка списков.
- Dragula переупорядочивает
li
элементы в DOM. - Когда запускается событие Drop, я синхронизирую модель и вызываю m.redraw ().
Однако пользовательский интерфейс оказывается в смешанном состоянии:
<li data-idx="0"> The Zero </li>
<li data-idx="1"> The One </li>
и после того, как пользователь перетащил 1 до 0, это закончится как:
<li data-idx="1"> The One</li>
<li data-idx="0"> The Zero</li>
Пытался:
m.redraw (), m.redraw.sync (), они работают правильно, но если т.е. LI перемещаются перетаскиванием, тогда результирующий HTML находится в смешанном состоянии.
очищая
dom
вvnode
с надеждой, что он будет воссоздан.- очистка
vmode.dom.textContent
- Назначьте случайные ключи и идентификаторы контейнеру виджета и различным LI
... И ничего не меняется, либо я получаю пустой виджет, либо значения в "data-idx" по-прежнему неверны.
Итак, мой вопрос, в общем, возможно ли и как использовать такие библиотеки, которые управляют внутренним html мифрилового виджета, а затем вызывают m.redraw (), чтобы мифрил повторно отображал беспорядок?
Задний план:
- Драгула инициализируется в oncreate
Мои виджеты монтируются с маршрутом:
"/видео": {
onmatch: () => loginWall(true), render: v => m(layoutWidget, m(videosWidget, v.attrs)) },