Отображение Vue unescaped 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>
Ответы
Ответ 1
Начиная с Vue2, тройные фигурные скобки были устаревшими, вы должны использовать v-html
.
<div v-html="task.html_content"> </div>
Неясно из ссылка на документацию относительно того, что мы должны разместить внутри v-html
, ваши переменные входят в v-html
.
Кроме того, v-html
работает только с <div>
или <span>
, но не с <template>
.
Если вы хотите увидеть это в прямом эфире в приложении, нажмите здесь.
Ответ 2
Вы можете использовать директиву v-html, чтобы показать это. как это:
<td v-html="desc"></td>
Ответ 3
Вы можете прочитать это здесь
Если вы используете
{{<br />}}
это сбежит. Если вы хотите сырой HTML, вы должны использовать
{{{<br />}}}
РЕДАКТИРОВАТЬ (5 февраля 2017 г.): Как указывает @hitautodestruct, в vue 2 вы должны использовать v-html вместо тройных фигурных скобок.
Ответ 4
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>
Ответ 5
Вы должны использовать директиву v-html для отображения html-содержимого внутри компонента vue
<div v-html="html content data property"></div>