dust.js全局关闭HTML编码

时间:2016-07-05 21:27:59

标签: dust.js

有没有办法在dust.js中全局关闭HTML编码?我相信我的数据足以在渲染过程中将其关闭。而不是必须添加" | s"对于每个模板文件中的每个标记,能够全局设置它将是理想的。

如果没有,有没有办法使用自定义助手过滤?我创建了一个@val帮助器,但没有办法应用" | s"过滤。根据文档,以下内容应该有效:

{@val filters="|s" /}

但它本身并不起作用,所以我认为某些逻辑需要放在帮助器本身内。

1 个答案:

答案 0 :(得分:0)

您可以使用文档较少的esc编译指示将全局上下文应用于模板块。

{
  "hello": "Hello & World"
}

{%esc:s}
  This applies |s to everything inside the pragma
  {hello} <-- will not escape the ampersand
{/esc}

对于你的第二个问题,这取决于你的助手在做什么。如果您的助手通过Chunk.render返回任何类型的块,则必须手动应用过滤器。如果您的助手返回一个值,该值将通过任何存在的filters传递。以下是一些示例:假设您有一个帮助器{@val},它只返回以value传递给它的任何内容。

从助手返回值意味着尊重filters

dust.helpers.val = function(chunk, context, bodies, params) {
  return params.value;
};

{@val value="Hello & World" /} <-- Hello &amp; World
{@val value="Hello & World" filters="s" /} <-- Hello & World

从帮助者返回一个块会忽略filters

dust.helpers.val = function(chunk, context, bodies, params) {
  return chunk.write(params.value);
};

{@val value="Hello & World" /} <-- Hello & World