我想做类似这样的事情:
{{user.name.toLowerCase()}}
但是我遇到了这个错误:
Error: Parse error on line X:
...tatus {{user.name.toLowerCase()}}">
-----------------------^
Expecting 'ID', got 'undefined'
我想做类似这样的事情:
{{user.name.toLowerCase()}}
但是我遇到了这个错误:
Error: Parse error on line X:
...tatus {{user.name.toLowerCase()}}">
-----------------------^
Expecting 'ID', got 'undefined'
如文档所述(链接):
Handlebars.registerHelper('toLowerCase', function(str) {
return str.toLowerCase();
});
只需要像这样使用它:
<h1>By {{toLowerCase author}}</h1>
如果你只是想在HTML中以小写形式显示一些文本(无论这是否由handlebars生成),你可以使用CSS并应用text-transform,例如:
.css-class-here {
text-transform: lowercase;
}
我创建了以下辅助函数,但我想知道是否有更好的解决方案。
Handlebars.registerHelper('toLowerCase', function(value) {
if(object) {
return new Handlebars.SafeString(value.toLowerCase());
} else {
return '';
}
});
SafeString
?任何HTML都应该被转义。 - Michael Miorreturn (value && typeof value === 'string') ? value.toLowerCase() : '';
。 - Peter Pajchlreturn (str && typeof str === 'string' && str.toUpperCase()) || ''
比三元操作符更快。 - Laode Muhammad Al Fatih同时检查并确保它是一个字符串,如果不是则返回空。
Handlebars.registerHelper('lowercase', function (str) {
if(str && typeof str === "string") {
return str.toLowerCase();
}
return '';
});
用法:
// now let's pass a string or variable to our helper
{{lowercase 'MY NAME IS'}}
输出:
my name is
@Eric之前的回答现在好像不起作用了,我的解决方案非常类似,但是在新版本的handlebars中helpers的定义可能有所变化:
Handlebars.registerHelper('tolower', function(options) {
return options.fn(this).toLowerCase();
});
在模板中
<img src="/media/images/modules/{{#tolower}}{{name}}{{/tolower}}.png"...
干杯