Подтвердить что ты не робот

Как сделать строковое поле с помощью Handlebars.js?

Я хочу сделать что-то вроде этого:

{{user.name.toLowerCase()}}

но я получаю эту ошибку:

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

Ответ 1

Я создал следующий помощник, но мне любопытно, есть ли там лучшее решение.

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

Ответ 2

Как просто объяснено в doc:

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

И просто используйте его вот так:

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

Ответ 3

Если вы просто пытаетесь отобразить какой-либо текст в нижней части HTML (независимо от того, генерируется ли он с помощью дескрипторов), вы можете использовать CSS и применять text-transform вот так:

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

Ответ 4

Предыдущий ответ от @Eric, похоже, сейчас не работает, мое решение очень похоже, но, вероятно, определение помощников немного изменилось в новых версиях рулей:

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

и в шаблоне

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

Приветствия

Ответ 5

Не мешает также проверить и убедиться, что это строка и если ничего не вернуть.

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

Использование:

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

Выход:

my name is