我试图解决数据可能包含引用其他数据的标记的情况。所以,如果我的尘埃文件看起来像这样:
Document.title: {Document.title}
cfg.title: {cfg.title}
output: {#ctx key="{cfg.title}" /}
我的上下文如下:
{
cfg: {
title: '{Document.title}'
}
, Document: {
title: 'Here is my title'
}
, ctx: function(chunk, context, bodies, params){
return context.resolve(params.key);
}
}
我得到以下输出:
Document.title: This is the title
cfg.title: {Document.title}
output:
我的" ctx"辅助函数需要看起来像是要输出"这是我的标题"? (注意:我知道只指向Document.title会更容易,但是' cfg''文档'是从不同的地方生成的,并且在渲染时合并)
答案 0 :(得分:0)
在某些时候,您必须编译(或以其他方式解析)构成配置的minitemplate。这是一种可能的方法,我使用dust.compile
预先构建配置:
{
cfg: {
title: dust.compile('{Document.title}')
}, Document: {
title: 'Here is my title'
}, ctx: function(chunk, context, bodies, params){
eval(params.key)(chunk, context);
}
}
使用模板:
{#ctx key=cfg.title /}
请注意,您直接在此处传递cfg.title
,而不是先将其字符串化 - 这很重要,这样您就不必使用context.resolve
进行双重查找。
此方法不会生成模板可读cfg.title
,因此如果这对您很重要,您可以将dust.compile
步骤移至ctx
函数内。