Если у вас есть шаблон с именем someTemplate
, вы можете включить его в другой шаблон, используя {>someTemplate/}
. Вы можете назначить контекст {>someTemplate:someContext/}
и передать встроенные параметры с помощью {>someTemplate some_param="A parameter"/}
. Пример:
<h1>{heading}</h1>
<p>{article}</p>
{>someTemplate/}
Если вы хотите использовать блоки (они имеют следующий синтаксис {+blockName/}
или {+blockName}Default block content{/blockName}
, то вы должны определить шаблон с блоком, а затем включить этот шаблон, как частичное, а затем переопределить блок Пример шаблона с. название "someTemplate":
<h1>{heading}</h1>
<p>{article}</p>
{+someBlock/}
Затем переопределить блок следующим образом:
{>someTemplate/}
{<someBlock}
My custom block content.
{/someBlock}
правок:
Чтобы настроить блок за пределами шаблона, создайте контекст, используя dust.makeBase
. Этот объект контекста может быть передан dust.render
вместо вашего шаблонаData (пыль делает это внутренне в любом случае). Затем добавьте блок в контекст, используя context.shiftBlocks
с аргументом, являющимся хешем, с блоками, которые вы хотите переопределить. Пример:
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.render ... – Crystal
Хорошо, никаких проблем. Я добавил, что вам нужно ... надеюсь. – Simon