Я создал специальный помощник handlebars, и я получаю следующую ошибку, когда не определяю значение для параметров.Handlebars TypeError: Не удается прочитать свойство 'fn' undefined
module.exports = function(src, color, classatr, options) {
if (typeof src === 'undefined') src = '';
if (typeof color === 'undefined') color = '';
if (typeof classatr === 'undefined') classatr = '';
var bg = '<table class="'+ classatr +'" cellpadding="0" cellspacing="0" border="0" width="100%">\
<tr>\
<td background="'+ src +'" bgcolor="'+ color +'" valign="top">\
<!--[if gte mso 9]>\
<v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;">\
<v:fill type="tile" src="'+ src +'" color="#'+ color +'" />\
<v:textbox style="mso-fit-shape-to-text:true" inset="0,0,0,0">\
<![endif]-->\
<div>'
+ options.fn(this) +
'</div>\
<!--[if gte mso 9]>\
</v:textbox>\
</v:rect>\
<![endif]-->\
</td>\
</tr>\
</table>';
return bg;
}
Это работает, если я определить все три параметра, как например:
{{#bg-img 'assets/img/hero-header.jpg' '000000' 'my-class'}}
<container>
<row>
<columns>
</columns>
</row>
</container>
{{/bg-img}}
Если я не определяю консоль параметр показывает «Рули TypeError: Не удается прочитать свойство„Fn“неопределенных».
{{#bg-img }}
<container>
<row>
<columns>
</columns>
</row>
</container>
{{/bg-img}}
Любые идеи относительно того, что я делаю неправильно здесь?
Обновление: также проверяется с помощью «null», как предложено ниже, но все еще такая же ошибка.
if (typeof src === 'undefined' || src === null) src = '';
if (typeof color === 'undefined' || color === null) color = '';
if (typeof classatr === 'undefined' || classatr === null) classatr = '';
Есть ли способ обойтись без необходимости «null» –
Не думаю, что есть. потому что с помощью 'null' вы говорите функции, что этот параметр существует (означает его определение), даже если он не содержит никакого значения. которые вы не можете сделать ни с чем другим (т. е. «undefined»). поэтому 'null' - лучший способ обойти без фактического предоставления какого-либо параметра. – m87
{{# bg-img '' '' ''}}, который делает трюк. Спасибо за помощь. Отмечено как ответ. –