我们如何在Nodejs中使用“查找”来包含部分内容?
我们使用此语法在运行时包含部分:
{{> (lookup . 'file') }}
file是父文件的var名称。
我试着在文件名中添加一个前缀,所以我尝试了:
{{> lookup . 'path/file'}}
{{> (lookup . (strmerge 'path/' 'file')) }}
注意:我做了一个帮助方法来合并字符串
我试过那些和其他人,但没有任何对我有用。
有谁知道如何做到这一点?
谢谢
回答如下:在代码{{> (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供您参考。
我们如何在Nodejs中使用“查找”来包含部分内容?
我们使用此语法在运行时包含部分:
{{> (lookup . 'file') }}
file是父文件的var名称。
我试着在文件名中添加一个前缀,所以我尝试了:
{{> lookup . 'path/file'}}
{{> (lookup . (strmerge 'path/' 'file')) }}
注意:我做了一个帮助方法来合并字符串
我试过那些和其他人,但没有任何对我有用。
有谁知道如何做到这一点?
谢谢
回答如下:在代码{{> (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供您参考。