tadatuta / bem-bemtree-static-project-stub

12 stars 8 forks source link

*.js #5

Closed mirotincev closed 8 years ago

mirotincev commented 8 years ago

Владимир, спасибо за bemtree и работу что вы делаете Не могли бы еще добавить как работает инициализация js? сколько не пробывал не получается сделать на блок простого вывода алерта при наведении или клика по блоку, когда сам js есть в скомпилированном файле и выводит console.log(this.name) но далее provide(BEMDOM.decl( ни чего не работет

Заранее спасибо

tadatuta commented 8 years ago

@mirotincev Возможно, не хватает поля js: true в BEMJSON?

Вообще о том, как работает i-bem.js, написано достаточно подробно в Руководстве, а минимальный работающий пример выглядит так (на основе project-stub):

  1. В desktop.bundles/index/index.bemjson.js создать блок, к которому будет написан JS, например, { block: 'b1', js: true, content: 'Кликни меня!' }. Поле js: true с помощью шаблонов сгенерирует на DOM-узле блока микс с блоком i-bem и добавить data-bem атрибуты.
  2. В 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('На меня кликнули')
                });
            }
        }
    }
}));

});

Этого должно быть достаточно, чтобы блок начал реагировать на клики.

mirotincev commented 8 years ago

Спасибо огромное, до меня сейчас только дошло что я пытался сделать что то с элементом блока и не с самим блоком, т.е в моем варианте было { 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:Думаю можно закрывать