Handlebars 自定义 Helper 参数如何工作

Nic*_*icO 3 javascript templates handlebars.js

我试图理解把手助手的论点是如何产生的。

我了解所调用的实际函数,但不了解如何为其提供所需的参数。

示例 1 - 内置 Helper:

Handlebars.registerHelper("if", function(conditional, options) {
  if (conditional) {
    return options.fn(this);
  } else {
    return options.inverse(this);
  }
});
Run Code Online (Sandbox Code Playgroud)

被称为通过

{{#if blockExists}}
   //blalba
{{/if}}
Run Code Online (Sandbox Code Playgroud)

它们是什么conditional以及options如何实际解析为函数?

示例 2 - 自定义助手:

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

这个助手怎么称呼?参数是如何解析的?由于返回值不是trueor ,如何使用它false

我很感激任何帮助。

Gir*_*tto 7

文档:具有多个参数的助手

您的 hbs 文件:

{{concat "str1" "str2" "separetor"}}
Run Code Online (Sandbox Code Playgroud)

第一个参数是助手的名称,其他参数是参数

您的帮手:

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

{{expression}} 返回的值可以是字符串,您应该将其传递给return new Handlebars.SafeString(result);