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>
