Перемещение компонентов Vue внутри dom?
я перемещаю компоненты Vue в dom, если я нахожусь на мобильном телефоне, так как я хочу использовать абсолютное позиционирование и хочу убедиться, что я не в relative
контейнер.
if (this.mobile) {
this.$el.parentNode.removeChild(this.$el);
document.getElementById('vue').appendChild(this.$el);
} else {
// Place the element back at it's original location.
}
этот код помещается с debounced resize
метод, поэтому он также работает при изменении размера окна.
он работает нормально, но когда я начинаю на мобильном телефоне и изменяю размер обратно на рабочий стол, мне нужно получить исходное местоположение dom, где компонент был впервые инициализирован.
это может быть Javascript только вопрос, но как я могу получить исходное местоположение точного положения dom этого компонента, чтобы я мог поместить его обратно?
редактировать
Я сохраняю исходный родительский элемент с помощью:
this.parent = this.$el.parentElement;
это не гарантирует правильный порядок в родительском элементе, хотя, когда я добавляю элемент обратно в parentElement снова.
1 ответов
вы просто хотите сохранить оригинал parentNode
один раз и использовать его, когда вам это нужно. Что-то вроде этого должно работать. В зависимости от настройки может потребоваться использовать insertBefore
С идеей скрытого маркера Дэниела Бека.
if (!this.originalParentNode) {
this.originalParentNode = this.$el.parentNode;
}
if (this.mobile) {
this.$el.parentNode.removeChild(this.$el);
document.getElementById('vue').appendChild(this.$el);
} else {
// Place the element back at its original location.
this.originalParentNode.appendChild(this.$el);
}