Добрый день! С обновлением документации и помощью на форуме уже стало все намного яснее, но иногда возникают вопросы.
Сделал страничку, в шапке разместил блок, по клику на который вызываю модальное окно с корзиной.
Далее по страничке вниз, разместил список позиций, у каждого есть кнопка добавить в корзину, по клику на которую нужно открыть модальное окно в шапке. Тк к каждой позиции прикручивать свое модальное окно, мне кажется бредовой да и загрузить контент в одно окно не составит труда, вопрос по правильной организации на бэм.
@webtehnology https://github.com/tadatuta/bem-bricks/tree/master/common.blocks/info-modal
@tadatuta Спасибо! Этот блок нужно разместить в любом месте блока page, и он сам как я понимаю создаст пустой блок modal. Вызов осуществляется если примиксовать info-modal к блоку или элементу?
Его вообще не нужно размещать (это произойдет автоматически за счет шаблонов), достаточно добавить в депсы и просто вызывать через
InfoModal.show('hello!');
К примеру из конструкции ниже, удалить блок с модальным окном тк info-modal сам его создаст , далее deps к какому блоку нужно добавить?
InfoModal.show('hello!');
вызываю в js файле блока? С другими блоками для которых нужно вызвать модальное окно нужно повторить как я понимаю операциюда
к тому, в котором планируется вызывать
InfoModal.show('hello!');
. Судя по коду примера — вquery-top.deps.js
.да. и не забыть получить
InfoModal
через зависимостьym
.все так.
если можно подробнее описать это.
Все получилось, только добавил еще это,
И вопрос вот в чем, где в
bemjson
теперь описывать содержимое модального окна для блокаquery-top
? нужно создать скрытый блок или элемент внутри блокаquery-top
, содержимое которого потом загружать в модальное окно.Например, это можно делать прямо на клиенте, вот так:
Чтобы нужные шаблоны попали на клиент, см. https://ru.bem.info/platform/deps/#Подключение-зависимостей-по-технологии
@tadatuta получается нужно дополнить файл
query-top.deps.js
такой строкой, но при сохранении сразу выдается ошибкаОшибка
Так же создал файл папку
my-modal-content
на уровнеdesktop.blocks
с файломmy-modal-content.bemhtml.js
я правильно понял, что тут можно описать содержимое которое нужно загрузить в модальное окно или же нужно описывать блокmy-modal-content
в bemjson?по поводу ошибки с текущим описанием помочь не могу — код выглядит правильно. это весь выхлоп или какой-то стектрейс все-таки выводится?
а содержимое модала можно как в bemjson, так и в bemhtml положить — это дело вкуса.
Если класть в bemjson нужно и с классами работать? Те по умолчанию блок с содержимым модального окна должен быть скрыт и потом показан модификатором или вообще не загружен на страницу, а формируется наподоби аякс запроса. Или это уже не в ту степь?
@zxqfox кусок тут прям написал, но дело не в запятой
@webtehnology и не в этой запятой!? - ,}. Блок этим заканчивается
это зависит от того, как устроен проект: используется ли BEMTREE, как устроен сервер и т.п.
@tadatuta пока готовлю только верстку на стандартной сборке, может я неправильно задачу описываю или это другое уже, пока мы используем только верстку и собираем уже на Битриксе проект. На выходе я должен передать программеру верстку в которой уже описана все логика взаимодействия блоков. Я ещё раз приношу прощения за кучу вопросов.
Попробую на другом примере описать. На страничке есть список товаров(у каждого товара есть изображение и цена , вообщем стандартная карточка), так вот при нажатии на изображение открывается модальное окно в которое грузится увеличенное изображение и дополнительные данные, обычно эту задачу решал так:
делал одно модальное окно
на блок с изображением навешивал событие и аяксом загружал в модальное окно нужные данные
для демонстрации верстки, можно было просто создать отдельный файлик и его загружать аяксом, а на этапе сборки сайта уже автоматизироваь в компоненты и тд(речь про Битрикс)
У меня и возникает непонимание, как описать блок в bemjson, чтобы загрузить его только по требованию, а не нагружать страницу загрузкой кучи блоков. Или я неправильно в корне понимаю процесс.
Вариантов решения много. Скорее всего удобно было бы положить данные в JSON-е, сделать микро-сервер, который бы на запрос по id возвращал данные нужного товара, а дальше, если шаблонизация на сервере не предполагается ввиду битрикса, конвертировать эти данные в BEMJSON и накладывать шаблоны уже на клиенте.
Пример (код не проверял):
Вроде просмотрел все логично
data.url
иdata.description
это можно тянуть изdata
описанном в блоке по которому кликнули в основном bemjson и как быть если структура куда сложнее чем 2 елемента а к примеру целя форма или 2-ка блоков? В статической верстке это можно реализовать, чтобы потом уже при сборке проекта в битриксе заменить данными которые формируются динамическиПадает весь js, если прописываю
BEMHTML
убираю все остальные скрипты начинают работать