小程序默认是不支持html格式的内容显示的,那我们需要显示html内容的时候,就可以通过wxParse来实现。
首先我们下载wxParse,github地址:https://github.com/icindy/wxParse
1、下载完之后我们需要用到目录下的wxParse文件夹,把他拷贝到我们的项目目录下(与pages同级目录)
2、然后,在app.wxss全局样式文件中,需要引入wxParse的样式表
@import "wxParse/wxParse.wxss";
3、在需要加载html内容的页面对应的js文件里引入wxParse
const WxParse = require('../../wxParse/wxParse.js');
通过调用WxParse.wxParse方法来设置html内容
WxParse.wxParse(bindName , type, data, target,imagePadding)1、bindName绑定的数据名(必填)
2、type可以为html或者md(必填)
3、data为传入的具体数据(必填)
4、target为Page对象,一般为this(必填)
5、imagePadding为当图片自适应时左右的单一padding(默认为0,可选)
// 获取问题详情 getIssueDetail (id) { var that = this app.ajaxGet('dbask/detail/' + id, {}, res => { this.setData({ issue: res.data }) if (that.data.issue.description) { WxParse.wxParse('issue.description', 'html', that.data.issue.description, that); } var _data = that.data.issue.askItems var _len = _data.length for (var i = 0; i < _len; i++) { WxParse.wxParse('comment' + i, 'html', _data[i].comment, that); if (i === _len - 1) { WxParse.wxParseTemArray("askItemsArr", 'comment', _data.length, that) } } wx.hideLoading() }) },
4、最后,在页面中引用模板
<import src="../../wxParse/wxParse.wxml"/> <view class='issue_content'> <template is="wxParse" data="{{wxParseData:issue.description.nodes}}"/> </view>
注意循环使用的时候,引用模板
<view class='issue_content'> <template is="wxParse" data="{{wxParseData:askItemsArr[index]}}"/> </view>
注意wxParse解析数组数据时,按照文档上的方法进行操作
var _data = that.data.issue.askItems var _len = _data.length for (var i = 0; i < _len; i++) { WxParse.wxParse('comment' + i, 'html', _data[i].comment, that); if (i === _len - 1) { WxParse.wxParseTemArray("askItemsArr", 'comment', _data.length, that) } }
这个时候我们会发现askItemsArr里只有comment的数据,其他数组都消失了。
那么在渲染数组时,我们就通过askItemsArr[index]去将数组传入