Дисплей вю неэкранированный HTML-код
как я могу управлять, чтобы получить 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>
4 ответа:
начиная с Vue2, тройные скобки были устаревшими, вы должны использовать
v-html
.
<div v-html="task.html_content"> </div>
непонятно от ссылка на документацию что касается того, что мы должны разместить внутри
v-html
ваши переменные идет внутриv-html
.и
v-html
работает только с<div>
или<span>
а не с<template>
.если вы хотите увидеть это в прямом эфире в приложении, нажмите здесь.
вы можете прочитать, что здесь
Если вы используете
{{<br />}}
он будет спасен. Если вы хотите raw html, вы должны использовать
{{{<br />}}}
EDIT (Feb 5 2017): как указывает @hitautodestruct,в Vue 2, вы должны использовать v-html вместо тройных фигурных скобок.
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>