Есть элемент 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:-- Всё работает ок.