web-dev-qa-db-ja.com

Handlebars.jsを使用してフィールドを小文字にするにはどうすればよいですか?

私はこのようなことをしたい:

{{user.name.toLowerCase()}}

しかし、私はこのエラーを受け取ります:

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

次のヘルパーを作成しましたが、もっと良い解決策があるかどうか興味があります。

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

doc で簡単に説明したように:

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

そして、これを次のように使用します。

<h1>By {{toLowerCase author}}</h1>
68
Cyril N.

HTMLで小文字としてテキストを表示しようとする場合(ハンドルバーによって生成されるかどうかに関係なく)、CSSを使用して text-transform を次のように適用できます。

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

@Ericからの以前の回答は今は機能していないようです。私のソリューションは非常に似ていますが、おそらく新しいバージョンのハンドルバーではヘルパーの定義が少し変更されました。

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

およびテンプレート内

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

乾杯

8
f1ames

また、文字列であることを確認して確認しても問題はありません。

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
7
yonib