如何给存在数据库中的文本数据添加颜色样式

需求:

grafana 出库入库显示不一样的颜色怎么弄 入库出库颜色设置颜色_数据

将给定的文档内容存入数据库(用的orcale),查询到的数据在页面展示时,实现原标红字体样式,页面展示时同样显示,且内容可编辑。


一、数据如何存到数据库中?

因文本内容较多,将该字段定义为CLOB类型

存入,示例:

grafana 出库入库显示不一样的颜色怎么弄 入库出库颜色设置颜色_数据_02


取出,示例:

grafana 出库入库显示不一样的颜色怎么弄 入库出库颜色设置颜色_数据_03


因为要遍历的内容要区分标题和内容、且方便存取,字段中数据格式定义为json数组类型,例如:

[
 {
 “bigTitle”:“第一章”,
 “data”:[
 { “smalTitle”:“第一条”, “content”:""},
 { “smalTitle”:“第一条”, “content”:"",
 “other”:[{“title”:"",“content”:""}]
 }
 ]
 },
 {
 “bigTitle”:“第二章”,
 content:""
 },
 {
 “bigTitle”:“第三章”,
 content:""
 }
 ]

二、前端页面如何实现?

1.页面如何实现文本可编辑,且内容中可包含span标签

grafana 出库入库显示不一样的颜色怎么弄 入库出库颜色设置颜色_数据_04


第一次尝试的方法是:使用textarea,使用双向绑定可以实现文本可编辑,可是因为文本中含有span标签,所以报错

第二次尝试的方法是:使用div,因为div中可以允许有span标签,且contenteditable = “true”,可以将div变成文本样式,可以进行内容编辑

2.踩到的坑。。。

1.最开始没有添加(input)中的内容,且innerHtml为双向绑定,但是在页面上进行修改后,内容并没有改变,所以加上了(input) = “item.content=grafana 出库入库显示不一样的颜色怎么弄 入库出库颜色设置颜色_数据_05event.target.innerHtml”,将item.content 改为 item.content1,意思就是将修改后的内容赋值给另一个变量,具体也不太清楚····这样就解决了前面的坑

2.前段数据传值问题:
(1)最开始,前端数据直接传到后端,在后端对数据进行转json字符串处理,问题是,文本中的span标签被转义,导致再查询到前端时,解析报错
(2)解决方式:前端将最终的数据转为json字符串格式,然后传到后台,直接赋值就行,后端再查询时,在前端进行转json处理

前端文本中的被span标签包括的内容添加颜色?

这步就好实现了,直接在css中设置该div下span标签的颜色即可!

总结

最开始拿到这个需求还以为实现不了,且之前没有做过这样的需求,好在通过问同事都解决了!好记性不如烂笔头,发表出来,怕以后自己忘记.。哈哈哈