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