Vyhledávání na webu

javascript - Zobrazit neescapeovaný HTML ve Vue.js


Jak mohu zajistit, aby bylo HTML interpretováno uvnitř mustache bindingu? V tuto chvíli je zalomení (<br />) jen zobrazeno/uniknuté.

Malá Vue aplikace:

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  }
    ]
  }
})

A zde je šablona:

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

Odpověď č. 1

Můžete použít direktivu v-html k jejímu zobrazení. Takto:

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

Odpověď č. 2

Začínaje Vue2 byly trojité závorky zastaralé, měli byste použít v-html.

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

Z dokumentace není jasné, co bychom měli umístit do v-html, vaše proměnné jdou do v-html.

Také v-html funguje pouze s <div> nebo <span>, ale ne s <template>.

Pokud chcete vidět toto živě v aplikaci, klikněte sem.

Odpověď č. 3

Můžete si to přečíst zde

Pokud používáte

{{<br />}}

bude uniknuto. Pokud chcete surový HTML, musíte použít

{{{<br />}}}

ÚPRAVA (5. února 2017): Jak poukazuje @hitautodestruct, ve Vue 2 byste měli používat v-html místo trojitých složených závorek.

Odpověď č. 4

Musíte použít direktivu v-html pro zobrazování HTML obsahu uvnitř komponenty Vue

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

Související články