Как работают пользовательские аргументы помощника Handlebars - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь понять, как аргументы помощников Handlebars становятся такими.

Я понимаю реальные вызываемые функции, но не то, как параметры, которые им нужны, передаются их.

Пример 1 - встроенный помощник:

Handlebars.registerHelper("if", function(conditional, options) {
  if (conditional) {
    return options.fn(this);
  } else {
    return options.inverse(this);
  }
});

Вызывается через

{{#if blockExists}}
   //blalba
{{/if}}

Что такое conditional и options и как они фактически анализируются для функции?

Пример 2 - Пользовательский помощник:

Handlebars.registerHelper('concat', (str1, str2, separator) => {
  return `${str1 || ''}${separator || ''}${str2 || ''}`;
});

Как вообще называется этот помощник? Как анализируются параметры? Как использовать возвращаемое значение, если оно не true или false?

Я ценю любую помощь.

1 Ответ

1 голос
/ 28 января 2020

Документация: Помощники с несколькими параметрами

Ваш файл hbs:

{{concat "str1" "str2" "separetor"}}

Первый параметр - это имя помощников, остальные - аргументы

Ваши помощники:

Handlebars.registerHelper('concat', (str1, str2, separator) => {
 return `${str1 || ''}${separator || ''}${str2 || ''}`;
});

значения, возвращаемые {{expression}}, могут быть строкой, и вы должны передать ее с return new Handlebars.SafeString(result);

...