1

我正在使用dustjs进行前端模板。我有 json 数据作为 var userData = {'desc': '此内容应显示在 HTML SPAN TAG'};

灰尘模板:{userData.desc}

但是当我尝试渲染这个模板时,desc 内容显示在页面上“作为相同的字符串”,并且标签不显示为 HTML 跨度。

如果我使用 {userData.desc|s|h}:span 在页面上显示为 <span>

我可以使用的唯一方法是 {userData.desc|s} :此方法将跨度正确显示为 html 标记。但是 |s 也会取消转义脚本标签,这是有风险的。

我只想从 json 数据内容中取消转义 HTML 标签,有什么方法可以在dustjs 中实现这个要求..??

4

2 回答 2

0

唯一可用的用于禁用自动转义的 Dust 过滤器|s是 ,正如您所提到的,如果您的数据中可能包含脚本标记,则它是不安全的。根据Dust github 页面

过滤器不接受参数;如果您需要更复杂的行为,请改用 section 标签。

尽管文档中从未明确说明如何使用节标记来创建更复杂的过滤器行为,但我相信最可能的解决方案是创建一个@助手。

话虽如此,我想说内置过滤器对于大多数用例来说已经足够了。如果脚本标签有可能进入userData.desc,则不要禁用自动转义。如果您使用模板,那么无论如何都应该在模板(而不是 JSON)中创建标记。

于 2012-08-22T17:07:02.720 回答
0

您可以创建一个自定义过滤器 - 这比助手更适合您的需要。只需使用您自己的自定义代码扩展dust.filter,即可满足您的需求。

在这里参考我的答案:如何在dust.js中实现自定义渲染逻辑?

于 2012-08-27T02:43:21.807 回答