bem / bem-core

BEM Core Library
https://ru.bem.info/technologies/classic/i-bem/
Other
276 stars 95 forks source link

Не срабатывает автоматическая отписка при удалении блока #1580

Open belozer opened 6 years ago

belozer commented 6 years ago

CodePen

modules.require([
  'jquery', 'i-bem-dom', 'BEMHTML', 'button'
], ($, bemDom, BEMHTML, Button) => {

const html = BEMHTML.apply([
  { block : 'test', js : true },
  { block : 'button', text : 'click me' }
]);

const Root = bemDom.declBlock('root');

bemDom.declBlock('test', {
  onSetMod : {
    js : {
      inited : function() {
        console.log('Test inited');
        const btn = this.findParentBlock(Root).findChildBlock(Button);
        this._events(btn).on('click', this._onButtonClick, this);
      }
    }
  },

  _onButtonClick : function() {
    console.log('On button click from _events');
  },

}, {
  lazyInit : false
});

bemDom.append($('.root'), html);

setTimeout(() => { 
  bemDom.destruct($('.test')); 
  console.log('Test destructed'); 
}, 500);

});

После destuct блока кликаем на кнопку и получаем в консоль: On button click from _events

upd возможно проблема смежная с https://github.com/bem/bem-core/issues/1525

upd Проблему вроде починил. Осталось разобраться в причине и прислать PR