有没有办法在dust.js中全局关闭HTML编码?我相信我的数据足以在渲染过程中将其关闭。而不是必须添加" | s"对于每个模板文件中的每个标记,能够全局设置它将是理想的。
如果没有,有没有办法使用自定义助手过滤?我创建了一个@val帮助器,但没有办法应用" | s"过滤。根据文档,以下内容应该有效:
{@val filters="|s" /}
但它本身并不起作用,所以我认为某些逻辑需要放在帮助器本身内。
答案 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 & 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