我正在使用 dustjs 进行前端模板化。 我有json数据 var userData = {'desc':'此内容应显示在HTML SPAN TAG'};
中灰尘模板: {userData.desc}
但是当我尝试渲染此模板时,desc内容在页面上显示为“相同的字符串”,而标记未显示为HTML span。
如果我使用{userData.desc | s | h}:span在页面上显示为< span>
我可以使用的唯一方法是{userData.desc | s}:这个方法将span作为html标签正确显示。但是| | s也会出现脚本标签,这是一种风险。
我想 unescape只有来自json数据内容的HTML标签,有没有办法在dustjs中实现这个要求.. ??
答案 0 :(得分:0)
唯一可用于禁用自动转义的Dust过滤器是|s
,正如您所提到的,如果您的数据中可能包含脚本标记,则不安全。根据{{3}}:
过滤器不接受参数;如果你需要更复杂的行为,请使用section标签。
虽然文档中从未明确说明如何使用section标记来创建更复杂的过滤器行为,但我相信最可能的解决方案是创建@
帮助器。
话虽如此,我想说内置过滤器足以满足大多数用例。如果脚本标记可能进入userData.desc
,则不要禁用自动转义。如果您正在使用模板,那么无论如何都应该在模板(而不是JSON)中创建标记。
答案 1 :(得分:0)
你可以创建一个自定义过滤器 - 这比帮助器更适合你的需要。只需使用您自己的自定义代码扩展dust.filter即可。
请参阅我的回答:How do I implement custom rendering logic in dust.js?