1

sprintfのヘルパーを実装しようとしていDust.jsます。そのためには、@sprintfブロック ヘルパーのコンテンツにアクセスする必要があります。ブロックには、ブロック本体にアクセスするまでに解釈する必要がある追加のヘルパーまたは変数が含まれる場合があります。つまり、本体の結果を取得する必要があります。

// JSON context: { name: "Fred" }
{@sprintf day="Saturday"}Hello {name}, today is %s!{/sprintf}

「こんにちはフレッド、今日は %s です!」にアクセスするにはどうすればよいですか? 私のヘルパー関数で?

4

1 に答える 1

1

この gistのコード スニペットを使用することになりました。私は自分のニーズに合わせてそれを修正しました。

これが私の結果です(そして私自身の質問への答え):

dust.helpers.myHelper = function(chunk, context, bodies, params) {
  var output = "";
  chunk.tap(function (data) {
    output += data;
    return "";
  }).render(bodies.block, context).untap();
  console.log( output ); // This will now show the rendered result of the block
  return chunk;
}

これは、別の関数に抽象化することもできます。

function renderBlock(block, chunk, context) {
  var output = "";
  chunk.tap(function (data) {
    output += data;
    return "";
  }).render(block, context).untap();
  return output;
}

dust.helpers.myHelper = function(chunk, context, bodies, params) {
  var output = renderBlock(bodies.block, chunk, context);
  console.log( output ); // This will now show the rendered result of the block
  return chunk;
}
于 2013-11-02T11:43:52.497 に答える