Я перевожу приложение, основанное на JQuery, на Mithril. Это приложение использует Dragula, чтобы перетаскивать и изменять порядок списков.
- Dragula изменяет порядок элементов
li
в DOM. - Когда вызывается событие Drop, я синхронизирую c модель и вызываю 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>
Trial:
m.redraw (), м .redraw.syn c (), они работают правильно, но если ie. LI перемещаются с помощью dragula, тогда результирующий HTML находится в смешанном состоянии.
очистка dom
в vnode
с надеждой, что он будет воссоздан.
- очистка
vmode.dom.textContent
- Назначение случайных ключей и идентификаторов для контейнера виджетов и различных LI
... И ничего не меняется, либо я получаю пустой виджет или значения в «data-idx» по-прежнему неверны.
Так что мой вопрос, вообще говоря, возможно ли и как использовать библиотеки такого типа, которые управляют мифриловым виджетом внутри html, а затем вызовите m.redraw (), чтобы мифрил перерисовал беспорядок?
Фон:
- Dragula инициализируется в oncreate
Мои виджеты монтируются с маршрутом:
"/ videos": {
onmatch: () => loginWall(true),
render: v => m(layoutWidget, m(videosWidget, v.attrs))
},