bem-core icon indicating copy to clipboard operation
bem-core copied to clipboard

Подписка на удаление модификатора через 'modVal: false'

Open belozer opened this issue 9 years ago • 2 comments

Пример кода для разбора )

this._events(this._cardsEditBtn)
  .on({modName: 'checked', modVal: true}, this._editCards, this)
  .on({modName: 'checked', modVal: ''}, this._closeEditCards, this);

Булевые операторы должны иметь булевые значения.

{modName: 'checked', modVal: ''} - этот код не даёт информацию об отключении модификатора, если не знать текущие тонкости (можно подумать, что это установка модификатора, а не его снятие).

{modName: 'checked', modVal: false} - наглядно говорит про отключение модификатора.

belozer avatar Dec 11 '16 06:12 belozer

{modName: 'checked', modVal: ''} - этот код не даёт информацию об отключении модификатора, если не знать текущие тонкости (можно подумать, что это установка модификатора, а не его снятие)

Хочется, чтобы работа с модификаторами была консистентной для всего API, включая декларацию блока (declMod) и декларацию поведения (onSetMod). Но в каких-то из поддерживаемых браузеров нельзя написать:

onSetMod : { 
  false : function() {}
}

поэтому, во всем API библиотеки факт снятия модификатора — это выставление его в пустую строку.

Не уверен, что размывать API, потому что в одном из N мест оно выглядит нагляднее, это хорошая идея.

narqo avatar Dec 11 '16 12:12 narqo

@narqo если мне не изменяет память, то снятие модификатора можно делать так .setMod('checked', false).

belozer avatar Dec 11 '16 18:12 belozer