web-dev-qa-db-fra.com

Comment mettre en minuscule un champ à l'aide de Handlebars.js?

Je veux faire quelque chose comme ça:

{{user.name.toLowerCase()}}

mais je reçois cette erreur:

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

J'ai créé l'aide suivante, mais je suis curieux de savoir s'il existe une meilleure solution.

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

Comme expliqué simplement dans le doc :

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

Et utilisez-le comme ceci:

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

Si vous essayez simplement d'afficher du texte en minuscules en HTML (qu'il soit ou non généré par le guidon), vous pouvez utiliser CSS et appliquer text-transform comme ceci:

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

La réponse précédente de @Eric ne semble pas fonctionner maintenant, ma solution est très similaire, mais la définition des assistants a probablement changé un peu dans les nouvelles versions de guidons:

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

et dans le modèle

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

À votre santé

8
f1ames

Cela ne fait pas de mal de vérifier et de s'assurer qu'il s'agit bien d'une chaîne et sinon de ne rien retourner.

Handlebars.registerHelper('lowercase', function (str) {
  if(str && typeof str === "string") {
    return str.toLowerCase();
  }
  return '';
});

Utilisation:

// now let's pass a string or variable to our helper
{{lowercase 'MY NAME IS'}}

Production :

my name is
7
yonib