javascript - 在 v-html 属性中显示原始 html
问题描述
我发现从 vue 代码渲染 html 的问题。我需要从带有原始html的vue生成跨度
<table>
<tr>
<td style="width:33%" v-html="diffText"></td>
</tr>
</table>
this.diff.forEach((part) => {
let color = part.added ? 'green' :
part.removed ? 'red' : 'grey';
this.diffText += "<span style='color:" + color + "'>" + part.value + "</span>";
});
part.value
是原始的html。
解决方案
<table>
<tr>
<td style="width:33%">
<pre v-for="(d, key) in diff"
:key="key"
:style="{ color: getColor(d) }"
v-html="d.value" />
</td>
</tr>
</table>
...
methods: {
getColor(d) {
return d.added ? 'green' : d.removed ? 'red': 'grey'
}
}
...
...可能会产生您正在寻找的结果。由于<pre>
标签的内容不会被解释为 HTML,因此您也可以在此处使用v-text
而不是v-html
。
注意:与 不同<xmp>
,<pre>
标签并没有过时,并且它们在浏览器中的实现是一致的。
推荐阅读
- .net-core - 使用自定义源和官方提要进行 dotnet restore
- java - Spring Data Jpa 存储库使用片段如何应用查询提示和实体图
- django - 在 Django 中声明属性时指定模型 ID
- javascript - 如何捕获 iframe 的屏幕截图 - html2canvas
- mysql - 无法在 where 子句中使用日期条件执行 mysqldump
- reactjs - 如何将一个对象添加到 ReactJs 中的其他所有对象
- mysql - 如何将来自另一个表的值插入到表中 - mysql内部连接
- python - 如何在 PySpark 中实现嵌套 CV?
- apostrophe-cms - 无法添加管理员用户
- c# - .split with razor details C# asp.net core