如何在dust.js中访问块助手体?

时间:2013-11-02 09:05:30

标签: javascript dust.js

我正在尝试为sprintf实施Dust.js帮助器。为此,我需要访问@sprintf块助手的内容。该块可能包含需要在我访问块体时解释的其他助手或变量 - 这意味着,我需要获取正文的结果。

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

如何访问“Hello Fred,今天是%s!”在我的帮手功能?

1 个答案:

答案 0 :(得分:1)

我最终使用了来自this 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;
}