@VegasChickiChicki

Как сказать Vue, что DOM обновился?

Суть в том, что я создал директиву, которая нужна для скрытия\раскрытия блока, плавное изменение высоты. Когда вешаешь ее на элемент, она создает div обертку и переносит все элементы из блока в эту обертку, все работает, все нормально, НО есть одна проблема. Vue ничего не знает о существование этой обертки и начинаются проблемы, если например динамически добавить элемент в массив, который выведен с помощью v-for. Vue просто ингнорирует созданные на чистом JS блоки и начинается каша.

const HiddenWrapper = document.createElement('div');
const ChildNodes = el.children;

for (const el of [...ChildNodes]) {
   HiddenWrapper.insertAdjacentElement('beforeend', el);
}


Часть кода, которая создает и переносит блоки.

Есть ли возможность, каким либо образом сказать Vue, что DOM обновился или проще будет сделать это все через компонент и slot?
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
@UPSA
anykey. Я не программист, я просто ленивый.
6 часов без ответов и комментариев )))
1)где вы создали директиву? В вне Vue проекта или в компонентах Vue?
2) Первое, допустим все ужасно, тогда мне кажется watch вам в помощь.
если например динамически добавить элемент в массив, который выведен с помощью v-for. Vue просто ингнорирует созданные на чистом JS блоки и начинается каша.

А во вторых, значит вы своей оберткой разрушаете template. Вам либо усложнять компонент или как то разделить логику на компоненты.
Не создавайте div, а сделайте его компонентом и отрисовываете в нем ваши динамические элементы.
Переменная false - рисуем там и так.
Переменная true - рисуем не там и по другому.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы