Open 4ok opened 9 years ago
подпишусь, хотя этот вопрос никогда не напрягал. практически всегда используем this.ctx.
Также использую только this.ctx, но все же интересно разобраться
UP!
Team, please help
this.ctx
это прямо ссылка на фрагмент входного bemjson отвечающего за текущую обрабатываемую сущность
если нужно получить информацию о БЭМ-свойствах текущего контекста (block, elem, mods, elemMods), то всегда правильно использовать this
, где эти значения правильно поддерживаются (например, если во входном bemjson есть { elem: 'e1' }
, без указания блока, то поле this.block
будет вычислено по контексту)
история с this.ctx.data === this.data
выглядит или как баг, или как частный случай (если какие-то шаблоны записывают в this.data
ссылку на this.ctx.data
), или как недосмотр — в общем случае, такого быть не должно
для доступа к кастомным полям (типа this.ctx.data
и this.ctx.anotherkey
) всегда нужно использовать this.ctx
@veged, спасибо за ответ)
Например я могу использовать как this.ctx.block, так и this.block для получения имя блока.
Еще не понятная история с data, например если передать в bemhtml свойство data:
{ block: 'some-block', data: 'some-data' }
, то оно будет находится как и в this.ctx.data так и в this.data
Но если передать свойство отличное от data:
{ block: 'some-block', anotherkey: 'some-data' }
, то оно будет находится только в свойстве this.ctx.anotherkey