您可以使用少量记录的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
至今还没有找到一个解决的第二个问题,但首先,我可以通过更新“| h”过滤器来避免自动转义: dust.filters.h = function(value){return value; }; 我还添加了一个新的过滤器来替换它: dust.filters.esc = function(value){return dust.escapeHtml(value); }; –