Vue显示未转义的HTML

Mik*_*ike 159 html javascript vue.js

如何设法在胡子绑定中获取html解释?目前,break(<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  }
    ]
  }
})
Run Code Online (Sandbox Code Playgroud)

这是模板

<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>
Run Code Online (Sandbox Code Playgroud)

小智 228

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

<td v-html="desc"></td>
Run Code Online (Sandbox Code Playgroud)

  • 那个实际上在vue2中工作.第一个是编译. (3认同)
  • 仅对 v-html 发表一条评论。即使这能完成工作,我们也需要记住,我们应该渲染经过净化的 v-html 元素,否则我们的前端应用程序将面临 xss 漏洞。官方文档在这里:https://vuejs.org/v2/guide/security.html (3认同)

the*_*lip 149

从Vue2开始,三个大括号已被弃用,您将使用v-html.

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

文档链接中不清楚我们应该放在v-html哪里,你的变量就在里面了v-html.

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

如果您想在应用中看到这个,点击这里.


小智 84

你可以在这里阅读

如果你使用

{{<br />}}
Run Code Online (Sandbox Code Playgroud)

它会被逃脱.如果你想要原始的HTML,你必须使用

{{{<br />}}}
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,在vue 2.0中,三胡子[已被弃用](https://github.com/vuejs/vue/issues/2873)你应该[使用v-html](http://vuejs.org/api/ #v-html)代替. (57认同)
  • 我不喜欢在新方法中经常必须创建不必要的元素,纯粹是为了插入 html。这有时会破坏样式并产生不必要的嵌套。 (2认同)

小智 7

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>
Run Code Online (Sandbox Code Playgroud)


小智 7

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

<div v-html="html content data property"></div>
Run Code Online (Sandbox Code Playgroud)