如何设法在胡子绑定中获取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>
答案 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)
如果您使用
{{<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