web-dev-qa-db-ja.com

Vue表示エスケープなしHTML

どうやってhtmlを口ひげの束縛の中で解釈させることができますか?現時点では、ブレーク(<br />)は単に表示/エスケープされています。

スモールビューアプリ

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>
144
Mike

Vue2以降、トリプルブレースは推奨されなくなりました。v-htmlを使用することになります。

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

v-htmlの中に何を入れるべきかについては、 ドキュメントリンク からはわかりませんが、変数はv-htmlの中に入ります。

また、v-html<div>または<span>とのみ連携しますが、<template>とは連携しません。

これをアプリ内でライブで見たい場合は、ここで をクリックしてください

117
lucifer

表示するには、ディレクティブv-htmlを使用できます。このような:

<td v-html="desc"></td>
220
王开朗

あなたはそれをここで読むことができます

使うなら

{{<br />}}

それはエスケープされます。生のHTMLが必要な場合は、使用する必要があります。

{{{<br />}}}

EDIT(2017年2月5日):@hitautodestructが指摘するように、vue 2ではを使うべきです v-htmlトリプル中括弧の代わりに。

83
zeratulmdq

デフォルトでは、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
user10261970

vueコンポーネント内のhtmlコンテンツを表示するには、v-htmlディレクティブを使用する必要があります

<div v-html="html content data property"></div>
0
Shair Haider