Есть элемент Report__Params:
<div class="Report__Params Report__Params_type_detailmove Report__Params_groupObjects i-bem"></div>
Для него есть ряд модификаторов, в частности, type:* и groupObjects:true. В Report__Params.deps.js записано так:
shouldDeps : [
// Расширения для модификаторов по типу отчётов...
{ mods : { type : [
'detailmove',
'milage',
// ...
] } },
// Группировка выводимых табличных данных по объектам
{ mod : 'groupObjects' },
// ...
Предполагается, что type:* будет __base для groupObjects. Т.е., метод в js-технологии groupObjects ожидает, что this.__base.apply(this, arguments) вернёт данные, подготовленные в одном из js-модулей type:*.
Однако в одном (только одном!) случае происходит наоборот -- type наследует от groupObjects.
От чего это может зависеть? Как можно вообще влиять на последовательность накладывания модификаторов друг на друга?
enb@1.5.1
bem-core@4.2.1
bem-components@6.0.1
UP: Заметил, что проблема "плавающая": случается у разных модулей. Иногда вообще проходит, как не было. Похоже, что поведение случайное со склонностью к "правильному" (т.е., чаще всего ведёт себя, как ожидается, но непроизвольно начинает менять порядок применения).
Есть вообще к.-то способ гарантированно указать порядок применения модификаторов?
@lilliputten в модификаторе, который ожидает, что до него будет идти какой-либо базовый, необходимо в deps.js-файле указать этот базовый в секции
mustDeps(см. https://ru.bem.info/platform/deps-spec/#mustdeps).@tadatuta Ага, псиб! Только что наткнулся на "Зачем разделять mustDeps и shouldDeps?" в форуме. %)))
Сейчас для
groupObjectsуказываю в deps:-- Всё работает ок.