在Vue.js中显示未转义的HTML


189

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

小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>

1
为换行符使用未转义的HTML是过大的,只是想提一下!这是一个很大的安全风险
Ryan Taylor

Answers:


202

从Vue2开始,不赞成使用三括号v-html

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

文档链接不清楚我们应该放置在什么地方v-html,您的变量在里面v-html

此外,v-html只能与一起使用<div><span>但不能与一起使用<template>

如果您想在应用程序中实时观看,请单击此处


1
<template>如果您来自Angular.js并寻找类似的内容<ng-include>
那么

236

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

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

3
那个实际上在vue2中有效。首先是编译。
Yauheni Prakopchyk

1
我对v-html有限制文字的问题,有可能限制v-html中的文本吗?我尝试过,但失败了
Zum Dummi


5

默认情况下,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>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.