1

Dust.js GitHub ページを調べたところ、以下に示すようにパーシャルをテンプレートに渡すことができると書かれています。

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

そしてこのように:

{>toggle checkbox_title="Hi JM"/}  

両方を試しましたが、どちらも機能しなかったため、次を使用しました。

親:

{< checkbox_title}
Hi JM
{/checkbox_title} 
{>toggle/}

子:

{+checkbox_title/}

以下を使用してテンプレートをレンダリングしようとする場合を除いて、上記は機能します。

dust.render("toggle", base.push({checkbox_title:"hhhhhh"}),
    function(err, html) { console.log(html); });

目的: Dust.render を使用して子テンプレートのブロックをオーバーライドする

4

1 に答える 1

6

という名前のテンプレートがある場合は、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は、templateData の代わりに渡すことができます (いずれにせよ、dust はこれを内部的に行います)。次に、オーバーライドするブロックのハッシュである引数を使用して、コンテキストにブロックを追加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);
});

最後のコメント: 正直なところ、これまでこれを行う必要はありませんでした。テンプレートを単独で理解できるように、テンプレートの構文をできるだけ多く使用するようにします。とにかく、これが役立つことを願っています。

于 2013-08-13T07:20:43.483 に答える