Vue显示未转义的HTML

时间:2015-06-16 20:25:13

标签: javascript vue.js

如何设法在胡子绑定中获取html?目前,中断(<br />)只是显示/转义。

小vue app

var logapp = new Vue({
  el: '#logapp',
  data: {
    title: 'Logs',
    logs: [
      { status: true, type: 'Import', desc: 'Learn<br />JavaScript', date: '11.11.2015', id: 1  },
      { status: true, type: 'Import', desc: 'Learn<br />JavaScript', date: '11.11.2015', id: 1  }
    ]
  }
})

这是模板

<div id="logapp">    
    <table>
        <tbody>
            <tr v-repeat="logs">
                <td>{{fail}}</td>
                <td>{{type}}</td>
                <td>{{description}}</td>
                <td>{{stamp}}</td>
                <td>{{id}}</td>
            </tr>
        </tbody>
    </table>
</div>

6 个答案:

答案 0 :(得分:219)

您可以使用指令v-html来显示它。 像这样:

<td v-html="desc"></td>

答案 1 :(得分:113)

从Vue2开始,不推荐使用三重括号,您将使用v-html

<div v-html="task.html_content"> </div>

documentation link关于我们应该放在v-html内的内容尚不清楚,您的变量会进入v-html

此外,v-html仅适用于<div><span>,但不适用于<template>

如果您想在应用中看到这种情况,请点击here

答案 2 :(得分:83)

You can read that here

如果您使用

{{<br />}}

它会被逃脱。如果你想要原始html,你必须使用

{{{<br />}}}

编辑(2017年2月5日):正如@hitautodestruct指出的那样,在vue 2中你应该使用v-html 而不是三个花括号。

答案 3 :(得分:4)

默认情况下,Vue带有v-html指令来显示它,您将其绑定到元素本身,而不是对字符串变量使用常规的胡子绑定。

因此对于您的特定示例,您将需要:

<div id="logapp">    
    <table>
        <tbody>
            <tr v-repeat="logs">
                <td v-html="fail"></td>
                <td v-html="type"></td>
                <td v-html="description"></td>
                <td v-html="stamp"></td>
                <td v-html="id"></td>
            </tr>
        </tbody>
    </table>
</div>

答案 4 :(得分:0)

您必须使用v-html指令在vue组件内显示html内容

write()

答案 5 :(得分:0)

在使用 v-html 之前,您必须确保您转义的元素已经过消毒,以防您允许用户输入,否则您的应用程序将面临 xss 漏洞。

更多信息在这里:https://vuejs.org/v2/guide/security.html

我强烈建议您不要使用 v-html 来使用此 npm package