帮助器

时间:2016-05-09 19:40:13

标签: dust.js

我试图解决数据可能包含引用其他数据的标记的情况。所以,如果我的尘埃文件看起来像这样:

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''文档'是从不同的地方生成的,并且在渲染时合并)

1 个答案:

答案 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函数内。