@DmitryNs

Модальное окно на vue.js в готовый проект на битрикс?

Здравствуйте! Сделал модальное окно на vue.js: есть кнопка вызова модалки, по клику вызывается окно. Хочу внедрить его на готовый сайт на битриксе, но немного не понимаю логики. По сути вопроса два:
1. Если все генерируется в #app, то каким образом можно разместить несколько #app на одной странице, потому что кнопок вызова модального окна может быть несколько на одной странице.
2. Возможно ли в это модальное окно вставить битриксовую форму связи?
  • Вопрос задан
  • 377 просмотров
Пригласить эксперта
Ответы на вопрос 3
Мы используем Vue для реализации отдельных компонентов, в том числе и на "традиционных" сайтах.
Можно и с модальным окном (полноценным, с portal-vue и т.д.). Упрощённый пример:

import Vue from 'vue';
import Modal from '@/scripts/vue/components/Modal.vue';

// Находим элемент-компонент
// Скорее всего тут будет не id, а что-то вроде селектора по классу js-some-thing и т.д.
const el = document.getElementById('some-id');

// Создаём элемент для vue-компонента
// И помещаем его внутрь
// Не обязательно, но так удобно потом "прибираться"
const mountingPoint = document.createElement('div');
el.appendChild(mountingPoint);

// Создаём инстанс vue, монтируем его в наш элемент
let modal = new Vue({
  el: mountingPoint,
  render(h) {
    // А вот и модалка
    return h(Modal);
  },
});


Соответственно можно передавать props, вкладывать другие компоненты в модалку, изменять дата, слушать события и т.д. и т.п.
Подробнее про рендер-функции https://ru.vuejs.org/v2/guide/render-function.html

Когда нужно прибраться за собой:

modal.$destroy();
  modal.$el.parentElement.removeChild(modal.$el);
  modal = null;
Ответ написан
Комментировать
@nvdfxx
Senior Pomidor developer
Как вариант - не совать целый фреймворк туда, где можно парой строк обычного жс обойтись для показа модального окна
Ответ написан
@UPSA
anykey. Я не программист, я просто ленивый.
Я только начинаю, но ...
1. #app в переводе в DOM это ID. Он может быть только уникальным (единственным).
2. Сделайте #app1, #app2, #app3,...
3. С моим плохим знанием иностранного языка вроде пример подходит: https://medium.com/@disjfa/using-vue-js-in-existin...
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы