Есть в bem-components модальное окно https://ru.bem.info/libs/bem-components/v2.3.0/touch/modal/examples/ Каким образом можно создать его налету и запихнуть скажем контент из скрытого дива?
Есть в bem-components модальное окно https://ru.bem.info/libs/bem-components/v2.3.0/touch/modal/examples/ Каким образом можно создать его налету и запихнуть скажем контент из скрытого дива?
Есть несколько вариантов.
Можно заранее положить
modal
в DOM, а потом просто найти, выставить контент и показать:Либо можно создать его в рантайме с помощью шаблонов:
И, наконец, можно сделать «синглтон»: сделать блок-обертку, которая при первом обращении создаст
modal
и сохранит ссылку на него, а при последующих обращениях будет работать по первому сценарию.Дальше можно просто миксовать
info-modal
к любому блоку, которому нужно модальное окно и вызывать из негоInfoModal.show('бла-бла')
.@tadatuta Круто! Спасибо :)
@tadatuta а как такое с BH вытворить? В стабе код по BH устаревший :( не могу понять как на клиент отдать BH шаблоны
@JiLiZART На клиенте ничего не меняется, тут пример конфига со сборкой bh на клиент
@kompolom Вроде так и делаю, по итогу генерируются два файла ?.bh.js в котором есть все bh шаблоны и browser.bh.js в котором только один bh. Мне это нужно чтобы нормально можно было на клиенте сделать
BH.apply({block: 'modal'})
В итоге выяснил, чтобы собрать
?.bh.bemdecl.js
используяenb-bem-techs/deps-by-tech-to-bemdecl
с параметромsourceTech: 'js'
(параметр обязательный) нужно в?.deps.js
файле блока явно указыватьtech : 'js'
, чего естественно в core и components блоках нет. @tadatuta это баг или фича?фича. вы сами решаете какие шаблоны должны попадать на клиент
@Guria а если мне надо чтобы в клиентскую сборку попал
modal.bh.js
файл, как мне быть? Указав в?.deps.js
файле сtech: js
зависимость блока отmodal
результата не дало.@JiLiZART в deps нужно еще и технологию bemhtml указывать
в
my-block.deps.js
должно быть что-то вроде@tadatuta @kompolom спасибо, все заработало :)
@tadatuta, приветствую. Использую https://github.com/bemdesign (он на project-stub). Не совсем понял как сделать обвертку и с помощью синглтона вызывать модалку с разных элементов/блоков... на данный момент
bemjson.js
выглядит следующим образомКак выглядит
modal-basic/modal-basic.browser.js
-- создаю блок copy-modal, в него кладу
copy-modal.js
cо следующим кодом:пытаюсь подмешать в
bemjson.js
любому элементу после модалки(кнопке)ничего модалкой не обворачивается и соответственно по клику ничего не происходит. Я не особо силен в JS, но на jQuery реализовал бы за 5 мин, а тут встрял... Уважаемые форумчане, как правильно сослаться на нужное модальное окно и как в моем случае должен выглядеть код? есть крайняя необходимость в этом разобраться
@hiphoptime А вы для чего к модалке основной блок замиксовали? Не нужОн он там.
copy-modal
вообще сбоку где-то получился. Код вроде есть, но ни к чему не привязан, соответственно он не выполнится. Вам нужно перенести код вmodal-basic
Вmodal-basic
сохраняйте вложенные блоки как свойствоthis._modal
а не как переменную, иначе вы их не найдете потом. Модалку точно не найдете.@hiphoptime