我正在尝试在由Ractive.js呈现的数据中包含HTML标记(对于自动下标的化学符号,以防有人关心),但Ractive只是插入文本而不是创建新的DOM元素。
一个最小的测试用例,改编自60-second setup guide:
<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>' }
});
正如您在this JSfiddle中看到的那样,结果是Hello, <b>world</b>
而不是预期的“Hello, world ”
我猜这是与Ractive处理表达式的方式有关..但我还没有达到源有用的意义。
有关如何获得预期行为的任何想法?
答案 0 :(得分:10)
是的!你可以使用三重文章:
<p>Hello, {{{name}}}!</p>
在传统的胡子中,这意味着不要逃避name
&#39;的价值。转换为Ractive,表示将内容插入HTML而不是文本。
请注意在插入之前未对HTML进行清理,因此如果name
来自用户输入,则可能存在XSS和其他恶意内容:http://jsfiddle.net/rich_harris/4jBC8/。