您可以使用少量記錄的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); }; –