Skip to content

Conversation

@smdenis
Copy link

@smdenis smdenis commented Jun 23, 2016

По мотивам bem/bem-bl#591.
/cc @dfilatov @narqo

@dfilatov
Copy link
Member

dfilatov commented Jun 23, 2016

Если посмотреть на окружающий метод getMods, то получается хрень: сначала _extractMods читает из _modCache, а потом _getMods пишет этот результат обратно в _modCache.

@smdenis
Copy link
Author

smdenis commented Jun 23, 2016

Дело в том, что сейчас для без-DOM-ных элементов getMods() возвращает {} и потом им же затирает _modCache. Получается, после вызова getMods() не работают getMod(), hasMod().

@dfilatov
Copy link
Member

у _extractMods есть и второй параметр elem. Сейчас если кто-то передаст его, то получит модификаторы самого блока.

@smdenis
Copy link
Author

smdenis commented Jun 23, 2016

Да, потому что у блоков без DOM-представления и нет элементов.

@dfilatov
Copy link
Member

Как мне кажется, что лучше провести более глубокий рефакторинг здесь:

  • удалить метод _extractMods в i-bem
  • в getMods в i-bem брать значения из _modCache.
  • переопределить getMods в i-bem__dom и там уже вызывать _extractMods.

@smdenis
Copy link
Author

smdenis commented Jun 23, 2016

Кажется, что если переопределить getMods() в i-bem__dom, то тогда потеряется кэш, так?

@dfilatov
Copy link
Member

Кажется, что если переопределить getMods() в i-bem__dom, то тогда потеряется кэш, так?

Ну так надо сделать так, чтобы не терялся )

@smdenis
Copy link
Author

smdenis commented Jun 24, 2016

@dfilatov Поправил.

* @param {Object} mods Modifiers values
* @returns {BEM}
*/
setCache: function(modNames, mods) {
Copy link
Member

@dfilatov dfilatov Jun 24, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Почему он публичный-то? @Protected мы начинаем также с _

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И зачем вообще отдельный метод, вроде можно заинлайнить это по месту.

@smdenis
Copy link
Author

smdenis commented Jun 24, 2016

@dfilatov Спасибо! Поправил :)

modCache = this._modCache,
modNames = [].slice.call(arguments, hasElem ? 1 : 0);

return !modNames.length ?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Странно что ругается хук, но у нас по cs "?" прибивается, должно быть return !modNames.length?, поправь, пожалуйста, везде.

@smdenis
Copy link
Author

smdenis commented Jun 24, 2016

Поправил.

@deeonis
Copy link

deeonis commented Jun 28, 2016

@dfilatov нужен твой ок, сможешь посмотреть?

@narqo
Copy link
Member

narqo commented Jun 28, 2016

Тесты не проходят же:

  • ошибки code-style
  • мы используем should в тестах, а не expect.

@coveralls
Copy link

Coverage Status

Coverage increased (+0.1%) to 56.668% when pulling d0d553c on creedencewright:smdenis.getmods.fix into 04c64ef on bem:v3.

@smdenis
Copy link
Author

smdenis commented Jun 29, 2016

@narqo Поправил )


describe('getMods', function() {
it('should return specified mods', function() {
block.getMods('mod1', 'mod2', 'mod3').should.be.deep.equal({ mod1 : 'val1', mod2 : true, mod3 : false });
Copy link
Member

@dfilatov dfilatov Jun 29, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should.be.deep.equal -> should.be.eql
По крайней мере, мы используем везде вторую версию.

@coveralls
Copy link

Coverage Status

Coverage increased (+0.1%) to 56.668% when pulling 81f3b0d on creedencewright:smdenis.getmods.fix into 04c64ef on bem:v3.

@smdenis
Copy link
Author

smdenis commented Jun 29, 2016

Поправил.

@dfilatov
Copy link
Member

У меня больше нет вопросов.

@smdenis
Copy link
Author

smdenis commented Jun 29, 2016

@narqo есть ещё какие-то замечания?

@narqo
Copy link
Member

narqo commented Jun 29, 2016

@dfilatov это в v4 нужно?

@dfilatov
Copy link
Member

dfilatov commented Jun 29, 2016

@narqo там же нет getMods()!

@narqo narqo merged commit 6609b0a into bem:v3 Jun 29, 2016
@smdenis smdenis deleted the smdenis.getmods.fix branch June 29, 2016 15:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants