Добрый день! Столкнулся с тем, что добавление модификатора type: 'password' никак не отражается на разметке блока. Имею такой bemjson:
{
block: 'input',
mods: {width: 'available', 'has-clear': true, type: 'password'},
name: 'password',
placeholder: 'Password',
tabIndex: 2
}
На выходе получаю такой html:
<span class="input input_width_available input_has-clear input_type_password i-bem input_js_inited" data-bem="{"input":{}}">
<span class="input__box">
<input class="input__control i-bem input__control_js_inited" name="password" tabindex="2" placeholder="Password">
</span>
</span>
Полез смотреть в код элемента 'control' в файле input__control.bemhtml.js, и там вижу следующий код:
block('input').elem('control')(
tag()('input'),
addAttrs()(function() {
var input = this._input,
attrs = {
id : input.id,
name : input.name,
value : input.val,
maxlength : input.maxLength,
tabindex : input.tabIndex,
placeholder : input.placeholder
};
input.autocomplete === false && (attrs.autocomplete = 'off');
this.mods.disabled && (attrs.disabled = 'disabled');
return attrs;
})
);
Я полагал, что код, написанный в input_type_password.bemhtml.js
block('input').mod('type', 'password').elem('control').attrs()(function() {
return this.extend(applyNext(), { type : 'password' });
});
докинет в контекст выполнения шаблона поле 'type' со значением 'password', и это поле мы дернем в шаблоне элемента 'control' как-нибудь так:
attrs = {
...
type: this.type
}
Объясните, пожалуйста, обращение к этому свойству просто забыли написать или я неправильно понимаю процесс работы шаблонизатора? И если второе, то как мне сделать так, чтобы этот атрибут всё-таки попал в разметку?
Взял чистый
project-stub
, вставил вindex.bemjson.js
сниппет из описания:получил ожидаемый HTML с нужным атрибутом: