При добавлении select после загрузки страницы, данный select не работает.
При взаимодействии с созданным select в консоли браузера появляется ошибка:
Uncaught TypeError: Cannot read property 'setMod' of undefined.
Подключенные файлы: bem-components-dist/desktop/bem-components.css bem-components-dist/desktop/bem-components.js+bemhtml.js
JS:
modules.define('filter-form', ['i-bem__dom'], function(provide, BEMDOM) {
provide(BEMDOM.decl(this.name, {
onSetMod: {
js: {
inited: function() {
this.findBlockInside('select').on('change', function() {
var value = this.getVal();
console.log(value);
});
}
}
}
}));
});
Подскажите пожалуйста как решить данную проблему?
Необходимо использовать «ленивую инициализацию блока» при помощи статического метода live.
https://uk.bem.info/platform/tutorials/i-bem/live-init/
Скорее всего, проблема в использовании инициализации на domready (инициализация случается до того, как успевает обработаться код про
select
). Правильнее использовать бандл без автоинициализации https://yastatic.net/bem-components/latest/desktop/bem-components.no-autoinit.js+bemhtml.jsПример использования см. в https://jsfiddle.net/tadatuta/p3o8p324/