我们使用此语法在运行时包含部分:
{{> (lookup . 'file') }}
文件是父文件的var名称。
我尝试在文件名中添加前缀,所以我尝试了:
{{> lookup . 'path/file'}}
{{> (lookup . (strmerge 'path/' 'file')) }}
注意:我制作了一个帮助方法来合并字符串 我试过那些和其他人,但没有任何对我有用。
有人知道怎么做吗?
由于
答案 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供您参考。