电商类的应用在做商品详情页时经常使用富文本编辑器
微信小程序里展示的商品数据往往是从后端请求来的,包含div等标签结构和样式的富文本数据
那么,如何在微信小程序里直接展示这些数据呢?微信小程序从1.4.0版本开始支持富文本组件,就可以解决这个问题
rich-text有一个nodes属性,支持数组和字符串类型的数据
- 当nodes的值为数组时,是一组HTML节点的列表
- 当nodes值是字符串时,则是HTML字符串
代码如下所示
<view><rich-text node="<div>这是一个富文本节点</div>"></rich-text></view>
rich-text支持两种节点,通过type区分,分别是元素节点和文本节点,默认是元素节点
(1)元素节点:type = node,如表3.2所示
| 属性名 | 说明 | 类型 | 必填 | 备注 |
|---|---|---|---|---|
| name | 标签名 | String | 是 | 支持部分受信任的HTML节点 |
| attrs | 属性 | Object | 否 | 支持部分受信任的属性,遵循Pascal命名法 |
| children | 子节点列表 | Array | 否 | 结构和nodes一致 |
(2)文本节点:type = text,如表3.3所示
| 属性名 | 说明 | 类型 | 必填 | 备注 |
|---|---|---|---|---|
| text | 文本 | String | 是 | 支持entities |
展示了如何使用rich-text组件
index.wxml<view class='container'><view><view>传入HTML字符串</view><view><rich-text nodes="{{html}}"></rich-text></view></view><view><view>传入节点列表</view><view><rich-text nodes="{{nodes}}"></rich-text></view></view></view>---------------------------------------------------------------------------------------index.jsPage({data: {html: '<div style="line-height: 60px; color: red;">Hello World!<p style="font-size: 50px;color: green;">ho ho </p ></div>',nodes: [{name: 'div',attrs: {style: 'line-height: 60px; color: red;'},children: [{type: 'text',text: 'Hello World!'},{name: 'p',attrs: {style: 'font-size: 50px; color: green;'},children: [{type: 'text',text: 'ho ho'}]}]}]}})

在示例3-3中,用两种方式使用rich-text
第一个rich-text组件的nodes属性值为HTML节点字符串
第二个rich-text组件的nodes属性值为数组,数组的每个元素都是一个节点
