Подскажите пожалуйста. Как отправить POST без form, по событию на bem-components? С помощью deps, к своему блоку подключил я select из bem-components. А как теперь правильно получить выбранное значение из select-а? И например с помощью ajax отправить POST.
Возможно, так:
findBlock('select').getVal()
и так:@zxqfox, спасибо. Это ястно, но вот к примеру select он состоит из div-ов, и POST отправить надо после выбора. событие checked, не применим. click, mouseup и т.п. тоже, т.к. смена значения происходит не мгновенно и передается старое показание, а не выбранное. Да и я пробовал примерно так:
т.к. почему-то
ни в какую не реагирует.
@Bumerang47 изменения в селекте нужно ловить на БЭМ-событии
change
:Спасибо, так сработало:
На сервере node и через файл index/index.html работает отлично, скопировал на apache, повляется ошибка: "TypeError: this.bindToDoc(...).bindToDoc(...)._button is undefined". Так понимаю это из-за .on Почему где-то может работать, а в другм нет? =\
судя по тексту ошибки, она не относится к приведенному куску кода. в приведенном вижу только то, что
window.location.href
не должно быть в кавычках.И правда >_< Был введен в заблуждение, тем что ошибка вызывалась по клику данного блока. Избавился перекопировав весь layout. Кавычки нечаянно тут уже добавил, форматируя пост. Все работает везде :)
Не могу получить data-bem такого атрибута: data-bem="{menu-item:{val:1}}"
возвращает:
Второй объект содержит val: До него добраться ни как не могу. И .data('bem','menu-item') и .data('bem','menu-item').val() и как только не пробовал. Как это правильно получить? =\
не?
вообще, есть свойство this.params у инстансов i-bem, туда попадают такие параметры.
@apsavin, не:
TypeError: n(...).data(...)['menu-item'] is undefined
Я так понимаю this.params это только для bem объектов. Можно было бы попробовать $(this).bem('name').parse, но пишут $(this).bem() делать плохо.
Если
возвращает
то
не может быть undefined.
Проверьте еще раз свой код. https://www.dropbox.com/s/sc7bo49mzemwz8e/%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%202015-04-30%2011.42.13.png?dl=0
@apsavin, простите ваша правда. Получилось
Продолжение вопроса связанного с использованием bem-conponents - select, за пределами node-js.
Так, изначально, у меня формируется select. С произвольным параметром по умолчанию:
Получившийся блок, я помещаю в существующий проект на PHP и передаю переменную города в значение input:
Несмотря, на значение input (естественно), в popup-е, menu-item модификатор выбранного элемента установлен на 2-м элементе, как на с генерированном документе:
После чего я с вашей помощью, нагородил следующее:
В итоге, после выбора select-a класс модификатора checked в menu-item меняется на нужном элементе.
Но визуально, кнопка селекта не меняет свое значения:
Посоветуйте что ни будь пожалуйста?
@Bumerang47 нужно перестать использовать jQuery напрямую для общения с БЭМ-блоками. У них есть свое API для этого: https://ru.bem.info/libs/bem-components/v2.1.1/desktop/select/jsdoc/
Океей. Подсознательно я это понимал. @tadatuda, как бы Вы мне посоветовали поступить при использовании bem-components, в php проекте, без jQuery на прямую. Начиная с динамического выбора select-а из базы?
@Bumerang47 если речь идет о генерации блоков на сервере, то я рекомендую посмотреть в сторону использования bh-php. Если будут какие-то вопросы, думаю, автор — @zxqfox — сможет ответить.
Для генерации блоков на клиенте и вставки их в DOM следует пользоваться методами
i-bem.js
:Для реакции на изменение селекта потребуется что-то вроде
PS: приведенный код не проверял, так что возможны опечатки.