我们如何在Nodejs中使用“查找”来包含部分内容?

时间:2017-12-26 07:21:18

标签: node.js handlebars.js

我们使用此语法在运行时包含部分:

{{> (lookup . 'file') }}

文件是父文件的var名称。

我尝试在文件名中添加前缀,所以我尝试了:

  • {{> lookup . 'path/file'}}
  • {{> (lookup . (strmerge 'path/' 'file')) }} 注意:我制作了一个帮助方法来合并字符串

我试过那些和其他人,但没有任何对我有用。

有人知道怎么做吗?

由于

1 个答案:

答案 0 :(得分:1)

在代码{{> (lookup . 'file') }}中,我们告诉Handlebars,我们部分的名称可以在当前上下文对象的file属性中找到。

假设像{ file: 'myPartial' }这样的上下文对象,查找的结果是{{> myPartial }},它告诉Handlebars呈现一个名为“myPartial”的部分。

如果我们想为partial添加一个前缀,那么Handlebars将注册一个名为“path / myPartial”的部分,最简单的方法是将该路径添加到file的值上下文对象中的属性。上下文对象将变为:{ file: 'path/myPartial' }

如果出于某种原因,必须将“path /”前缀添加到模板而不是数据,那么我们需要确定一种生产方式我们当前数据中的字符串“path / myPartial”。

您的两次尝试都将“file”放在要查找的属性名称中。您的代码将尝试在上下文对象上找到属性path/file,这将失败。我们肯定需要一个帮助来连接字符串,但它必须将“path /”与file连接起来,而不是文字字符串,“file”。

为了实现我们的目标,我们将不再需要lookup帮助器。仅需要lookup因为您无法在Handlebars中编写{{> (file) }},因为Handlebars会将file视为帮助者而不是变量。但是,由于我们使用的是串联帮助器strmerge,我们可以使用它返回的String作为部分名称,而不需要lookup。正确的代码变为:

{{> (strmerge 'path/' file) }}

请注意,此示例中的file不在引号中。它是一个变量,而不是String。

我创建了一个fiddle供您参考。