3

我试图在 Ractive.js 呈现的数据中包含 HTML 标记(自动下标化学符号,以防万一有人关心),但 Ractive 只是插入文本而不是创建新的 DOM 元素。

一个最小的测试用例,改编自60 秒设置指南

<script id='template' type='text/ractive'>
    <p>Hello, {{name}}!</p>
</script>

<script type="text/javscript">
    var ractive = new Ractive({
    el: 'container',

    template: '#template',

    data: { name: '<b>world</b>' }
});

正如您在这个 JSfiddle中看到的那样,结果Hello, <b>world</b>不是预期的“Hello, world

我猜这与 Ractive 处理表达式的方式有关。但我还没有到源代码有意义的地步。

关于如何获得预期行为的任何想法?

4

1 回答 1

11

是的!您可以使用三重拼接:

<p>Hello, {{{name}}}!</p>

在传统的 Mustache 中,这意味着“不要逃避”的价值name。翻译为 Ractive,它的意思是“将内容插入为 HTML 而不是文本。

请注意,HTML 在插入之前没有经过清理,因此如果name来自用户输入,则可能存在 XSS 和其他讨厌的东西:http: //jsfiddle.net/rich_harris/4jBC8/

于 2014-05-07T12:21:47.943 回答