如何使用Handlebars.js小写字段?

时间:2012-01-25 22:18:37

标签: javascript handlebars.js

我想做这样的事情:

{{user.name.toLowerCase()}}

但是我收到了这个错误:

Error: Parse error on line X:
...tatus {{user.name.toLowerCase()}}">  
-----------------------^
Expecting 'ID', got 'undefined'

5 个答案:

答案 0 :(得分:68)

正如doc中简单解释的那样:

Handlebars.registerHelper('toLowerCase', function(str) {
  return str.toLowerCase();
});

就这样使用它:

<h1>By {{toLowerCase author}}</h1>

答案 1 :(得分:21)

如果你只是想在HTML中显示一些小写的文本(无论它是否由把手生成),你可以使用CSS并像这样应用text-transform

.css-class-here {
    text-transform: lowercase;
}

答案 2 :(得分:13)

我创建了以下帮助器,但我很好奇是否有更好的解决方案。

Handlebars.registerHelper('toLowerCase', function(value) {
    if(object) {
        return new Handlebars.SafeString(value.toLowerCase());
    } else {
        return '';
    }
});

答案 3 :(得分:8)

@Eric以前的回答似乎现在不起作用,我的解决方案非常相似,但是在新版本的把手中,助手的定义可能会有所改变:

Handlebars.registerHelper('tolower', function(options) {
    return options.fn(this).toLowerCase();
});

并在模板中

<img src="/media/images/modules/{{#tolower}}{{name}}{{/tolower}}.png"...

干杯

答案 4 :(得分:4)

也不会检查并确保它是一个字符串,如果没有返回任何内容。

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