Closed tenorok closed 8 years ago
// cc @veged
It's so long story (from the beginning of BEMHTML)... but I think now (considering to current pattern and best practices of BEMHTML templates usage) we can change that behaviour and make all extends consistent (priority of BEMHTML).
@mishanga let's think about it for synchronise with BH
@veged BH has force flag that allow you to override bemjson values afaik.
@zxqfox i know, but it's not about flag but about priority of redefinition
@mishanga plz take a look
Я +1 к автору issue. BH тут не при чем, там своя логика с force.
речь про то, что сейчас в BEMHMTL и в BH одинаковый приоритет между шаблонами и входным BEMJSON:
{ block: 'example', attrs: { a: 1 }}
bh.match('example', function(ctx) {
ctx.attr('a', '2');
});
даёт <div class="example" a="1"></div>
, а хочется <div class="example" a="2"></div>
и если это менять, то и в BH надо менять симметрично
Не надо сравнивать одно с другим. В BH и BEMHTML совершенно разные механизмы заложены. Давайте говорить только про BEMHTML. Он должен быть сам по себе консистентным: если мода tag в шаблонах заруливает BEMJSON, то и с attrs должно быть так же.
как же разные, если одни и те же по смыслу шаблоны работают одинаково? o_0
суть тикета в том, что я готов исправить это поведение на "консистентное" (в понимании большинства), но логично симметричное поведение иметь и в BH (в своё время ты же делал как раз разное поведение в BH для attrs и остальных)
Разница в том, что BH модифицирует контекст, а BEMHTML — нет. После применения первого шаблона мы теряем информацию о том, каким было изначальное значение в BEMJSON.
Тот факт, что сейчас шаблоны выглядят похожим образом и работают одинаково — чистое совпадение :) Как только появляется какая-то вложенность, эта иллюзия рушится.
В attrs такое же поведение, как везде: return force ? extend(base, new) : extend(new, base)
.
ну оок ;-) если ты говоришь, что ничего не надо, значит не надо
Let's move all discussion about BEMTREE and BEMHTML to https://github.com/bem/bem-xjst/issues
Right now attributes extends with priority of BEMJSON.
It so strange while js-parameters extends with priority of template.
I have trouble, when try override attribute in template. The example below.
BEMSJON:
BEMHTML:
Result:
Expected result: