Closed mirotincev closed 8 years ago
@mirotincev Возможно, не хватает поля js: true
в BEMJSON?
Вообще о том, как работает i-bem.js, написано достаточно подробно в Руководстве, а минимальный работающий пример выглядит так (на основе project-stub
):
desktop.bundles/index/index.bemjson.js
создать блок, к которому будет написан JS, например, { block: 'b1', js: true, content: 'Кликни меня!' }
. Поле js: true
с помощью шаблонов сгенерирует на DOM-узле блока микс с блоком i-bem
и добавить data-bem
атрибуты.common.blocks/b1/b1.js
написать, например, такой код:modules.define('b1', ['i-bem__dom'], function(provide, BEMDOM) {
provide(BEMDOM.decl(this.name, {
onSetMod: {
js: {
inited: function() {
this.bindTo('click', function() {
console.log('На меня кликнули')
});
}
}
}
}));
});
Этого должно быть достаточно, чтобы блок начал реагировать на клики.
Спасибо огромное, до меня сейчас только дошло что я пытался сделать что то с элементом блока и не с самим блоком, т.е в моем варианте было { block: 'b1', elem:'item', js: true, content: 'Кликни меня!' }
а в js соотвественно
modules.define('b1__item', ['i-bem__dom'], function(provide, BEMDOM) {
provide(BEMDOM.decl(this.name, {
onSetMod: {
js: {
inited: function() {
this.bindTo('click', function() {
console.log('На меня кликнули')
});
}
}
}
}));
});
И у меня ни чего не работало, еще раз спасибо. PS:Думаю можно закрывать
Владимир, спасибо за bemtree и работу что вы делаете Не могли бы еще добавить как работает инициализация js? сколько не пробывал не получается сделать на блок простого вывода алерта при наведении или клика по блоку, когда сам js есть в скомпилированном файле и выводит
console.log(this.name)
но далееprovide(BEMDOM.decl(
ни чего не работетЗаранее спасибо