dust.js - 如何将部分传递给 Dust.js 模板

标签 dust.js

我查阅了 Dust.js GitHub 页面,它说我可以将部分传递给模板,如下所示:

{@partial checkbox_title="JM"}
{>toggle/}
{/partial}

像这样:
{>toggle checkbox_title="Hi JM"/}  

我都试过了,但都没有奏效,所以我使用了以下方法:

家长:
{< checkbox_title}
Hi JM
{/checkbox_title} 
{>toggle/}

child :
{+checkbox_title/}

以上工作,除非我尝试使用以下内容呈现模板:
dust.render("toggle", base.push({checkbox_title:"hhhhhh"}),
    function(err, html) { console.log(html); });

目标:使用dust.render覆盖子模板中的 block

最佳答案

如果您有一个名为 someTemplate 的模板您可以使用 {>someTemplate/} 将其包含在另一个模板中.您可以使用 {>someTemplate:someContext/} 分配上下文并使用 {>someTemplate some_param="A parameter"/} 传递内联参数.例子:

<h1>{heading}</h1>
<p>{article}</p>
{>someTemplate/}

如果你想使用 block (它们有以下语法 {+blockName/}{+blockName}Default block content{/blockName} 那么你必须用 block 定义一个模板,然后将该模板作为部分包含,然后覆盖 block 。示例模板名称为“someTemplate”:
<h1>{heading}</h1>
<p>{article}</p>
{+someBlock/}

然后像这样覆盖 block :
{>someTemplate/}
{<someBlock}
    My custom block content.
{/someBlock}

编辑:

要自定义模板外的 block ,请使用 dust.makeBase 创建上下文.此上下文对象可以传递给 dust.render代替您的 templateData (无论如何,灰尘在内部都会这样做)。然后使用 context.shiftBlocks 将 block 添加到上下文中参数是您要覆盖的 block 的散列。例子:
var context = dust.makeBase(templateData).shiftBlocks({
    someblock: function (chunk, context) {
        return chunk.write('my new block content');
    }
});

dust.render('myTemplate', context, function (error, html) {
    console.log(html);
});

最后的一些评论:说实话,到目前为止我还没有必要这样做。我会尝试尽可能多地使用模板语法,以便您的模板可以自己理解。无论如何,我希望这会有所帮助。

关于dust.js - 如何将部分传递给 Dust.js 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18194366/

相关文章:

javascript - 使用dust.js 进行排序功能

node.js - 使用 Linkedin 的 dust.js 作为丰富的电子邮件模板平台

dust.js - 如何在dust.js中获取数组(数组长度)中的总项目数

javascript - 是否可以在dust.js 中创建嵌套助手?

node.js - 带有灰尘的 mongo 中的服务器端渲染

javascript - 无法渲染 Leaflettilelayer

javascript - 如何使用服务器的 JSON 响应动态填充灰尘模板?

javascript - 在dust.js中结合@math和@size

dust.js - {@size} 辅助函数可以在灰尘中的 {@math} 辅助函数内部使用吗?

javascript - Dust - 如何在循环中获取父上下文