在dustjs中,我可以在模板中放置一个模板,其中内部模板在部分标签中用字符串文字定义吗?

时间:2013-12-13 02:41:14

标签: templates dust.js

所以我有一个像这样的对象{“templateName”:“myTemplate”,“data”:{“one”:1}}

这是我的模板:

{templateName}
{>"{templateName}":data/}

这不会呈现(没有错误消息)...但是,当我将其更改为此时它会起作用:

{templateName}
{>"myTemplate":data/}

它在视图中呈现如下:

myTemplate
[then here it shows myTemplate, rendered with data passed to it]

它呈现完美,甚至在顶部显示正确的模板名称。我认为把钥匙放在引号上会有效,但我想我误读了尘埃指南。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:2)

经过一番挖掘,我相信我已经找到了问题。通过使用语法{>"{templateName}":data/},您将上下文从root更改为data。发生这种情况时,当Dust尝试解析模板名称时,将无法再访问templateName。因此,Dust最终会搜索名为""的模板。我已经为此错误提交了issue

话虽如此,如果我要写一本名为“尘埃:好的部分”的书,我会抛弃它的背景(例如{#myData:myContext})。我发现他们造成的问题多于他们解决的问题。

作为解决方法,您可以使用以下语法:

{templateName} {>"{templateName}"/}

然后你的“myTemplate”需要做类似的事情:

{data.one}

这是example的工作原理。