在 Vue.js 中显示未转义的 HTML
Display unescaped HTML in Vue.js
如何设法在小胡子绑定中获得 HTML 解释?目前中断 (<br />
) 只是 displayed/escaped.
小型 Vue 应用程序:
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>
如果你使用
{{<br />}}
它会被转义。如果你想要原始 html,你必须使用
{{{<br />}}}
编辑(2017 年 2 月 5 日):正如@hitautodestruct 指出的那样,在 vue 2 中你应该使用 v-html三花括号。
您可以使用v-html
指令来显示它。
像这样:
<td v-html="desc"></td>
从 Vue2 开始,三重大括号已被弃用,您将使用 v-html
。
<div v-html="task.html_content"> </div>
从 documentation link 中不清楚我们应该在 v-html
中放置什么,您的变量在 v-html
.
中
此外,v-html
仅适用于 <div>
或 <span>
,但不适用于 <template>
。
如果您想在应用程序中实时查看此内容,请单击 here。
Vue 默认附带 v-html 指令来显示它,您将它绑定到元素本身而不是对字符串变量使用普通的 mustache 绑定。
因此对于您的具体示例,您需要:
<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>
您必须使用 v-html 指令在 vue 组件中显示 html 内容
<div v-html="html content data property"></div>
在使用 v-html
之前,您必须确保您转义的元素经过清理,以防您允许用户输入,否则您的应用程序将暴露于 xss 漏洞。
更多信息在这里:https://vuejs.org/v2/guide/security.html
我强烈建议您不要使用 v-html
而使用此 npm package
如何设法在小胡子绑定中获得 HTML 解释?目前中断 (<br />
) 只是 displayed/escaped.
小型 Vue 应用程序:
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>
如果你使用
{{<br />}}
它会被转义。如果你想要原始 html,你必须使用
{{{<br />}}}
编辑(2017 年 2 月 5 日):正如@hitautodestruct 指出的那样,在 vue 2 中你应该使用 v-html三花括号。
您可以使用v-html
指令来显示它。
像这样:
<td v-html="desc"></td>
从 Vue2 开始,三重大括号已被弃用,您将使用 v-html
。
<div v-html="task.html_content"> </div>
从 documentation link 中不清楚我们应该在 v-html
中放置什么,您的变量在 v-html
.
此外,v-html
仅适用于 <div>
或 <span>
,但不适用于 <template>
。
如果您想在应用程序中实时查看此内容,请单击 here。
Vue 默认附带 v-html 指令来显示它,您将它绑定到元素本身而不是对字符串变量使用普通的 mustache 绑定。
因此对于您的具体示例,您需要:
<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>
您必须使用 v-html 指令在 vue 组件中显示 html 内容
<div v-html="html content data property"></div>
在使用 v-html
之前,您必须确保您转义的元素经过清理,以防您允许用户输入,否则您的应用程序将暴露于 xss 漏洞。
更多信息在这里:https://vuejs.org/v2/guide/security.html
我强烈建议您不要使用 v-html
而使用此 npm package