Closed belozer closed 6 years ago
https://github.com/bem/bem-core/blob/v4/common.blocks/i-bem-dom/i-bem-dom.js#L156
if(!entityCls.lazyInit || ignoreLazyInit || params.lazyInit === false) { ignoreLazyInit && domElem.addClass(BEM_CLASS_NAME); // add css class for preventing memory leaks in further destructing entity = new entityCls(uniqIdToDomElems[uniqId], params, !!ignoreLazyInit); delete uniqIdToDomElems[uniqId]; callback && callback.apply(entity, slice.call(arguments, 4)); return entity; }
Невозможно сделать lazyInit : true на определённом блоке из html.
lazyInit : true
Как вариант, можно переписать условие так
if(ignoreLazyInit || params.lazyInit === false || !entityCls.lazyInit && !params.lazyInit) … }
В добавок через lazyInit в модификаторе можно сломать поведение базового блока.
const Block = bemDom.declBlock('block', null, { lazyInit : false }); const Mod = Block.declMod({ modName : 'mod' }, null, { lazyInit : true }); console.log(Block.lazyInit, Mod.lazyInit); → true true
Предлагаю запретить использование lazyInit в declMod.
lazyInit
https://github.com/bem/bem-core/blob/v4/common.blocks/i-bem-dom/i-bem-dom.js#L156
Невозможно сделать
lazyInit : true
на определённом блоке из html.Как вариант, можно переписать условие так
В добавок через lazyInit в модификаторе можно сломать поведение базового блока.
Предлагаю запретить использование
lazyInit
в declMod.