在uni-app开发中,开发一个资讯详情页面,详情里包含图片和代码块。这时候用简单的rich-text控件已经不够用了。用官方demo里的html-parser.js也无法很好的展示代码区域。这个时候就要使用官方提供的插件来解决。
首先:下载插件:https://ext.dcloud.net.cn/plugin?id=183
第二步:写代码 demo示例
注意:官方提供的示例代码有点小问题,请用我下面的代码。
<template>
<div>
<u-parse :content="article" @preview="preview" @navigate="navigate" />
</div>
</template>
<script>
import uParse from '../../components/u-parse/u-parse.vue'; //注意:官方提供的示例代码有问题
export default {
components: {
uParse
},
data () {
return {
article: '<div>我是HTML代码</div>'
}
},
methods: {
preview(src, e) {
// do something
},
navigate(href, e) {
// do something
}
}
}
</script>
<style>
@import url("../../components/u-parse/u-parse.css"); //注意:官方提供的示例代码有问题
</style>
我这边具体的业务代码如下:(可以忽略)
<template>
<view>
<view class="banner">
{{banner.title}}
</view>
<view class="article-meta">
<text class="article-meta-text article-author">{{banner.source}}</text>
<text class="article-meta-text article-text">发表于</text>
<text class="article-meta-text article-time">{{banner.datetime}}</text>
</view>
<view class="article-content">
<div>
<u-parse :content="article" @preview="preview" @navigate="navigate" />
</div>
</view>
<view class="comment-wrap"></view>
</view>
</template>
<script>
import uParse from '../../components/u-parse/u-parse.vue';
const FAIL_CONTENT = '<p>获取信息失败1</p>';
export default {
components: {
uParse
},
data() {
return {
banner: {},
article: ''
}
},
onShareAppMessage() {
return {
title: this.banner.title,
path: '/pages/detail/detail?query=' + JSON.stringify(this.banner)
}
},
onLoad(event) {
// 目前在某些平台参数会被主动 decode,暂时这样处理。
try {
this.banner = JSON.parse(decodeURIComponent(event.query));
console.log("详情页面");
} catch (error) {
console.log("异常来!");
this.banner = JSON.parse(event.query);
}
uni.setNavigationBarTitle({
title: '找一找教程网zyiz.net'
});
this.getDetail();
},
methods: {
getDetail() {
var zyizurl = getApp().globalData.zyiz_domain + '/api/article/article.ashx?actName=detail&id=';
uni.request({
url: zyizurl + this.banner.newsid,
success: (result) => {
console.log("详情结果:");
console.log(result);
let content = FAIL_CONTENT
if (result.statusCode == 200) {
content = result.data.data.content
}
this.article = content;
}
});
},
preview(src, e) {
// do something
},
navigate(href, e) {
// do something
}
}
}
</script>
<style>
@import url("../../components/u-parse/u-parse.css");
/* #ifndef APP-PLUS */
page {
min-height: 100%;
}
/* #endif */
.banner {
margin: 10upx;
text-align: center;
}
.article-content image {
width: 96%;
}
.banner-img {
flex: 1;
}
.title-area {
position: absolute;
left: 30upx;
right: 30upx;
bottom: 30upx;
z-index: 11;
}
.title-text {
font-size: 32upx;
font-weight: 400;
line-height: 42upx;
lines: 2;
color: #ffffff;
overflow: hidden;
}
.article-meta {
padding: 20upx 30upx;
flex-direction: row;
align-items: center;
justify-content: flex-start;
}
.article-meta-text {
color: gray;
}
.article-text {
font-size: 26upx;
line-height: 50upx;
margin: 0 20upx;
}
.article-author {
font-size: 30upx;
}
.article-time {
font-size: 30upx;
}
.article-content {
font-size: 30upx;
padding: 0 30upx;
margin-bottom: 30upx;
overflow: hidden;
}
</style>
第三步:查看效果:
1、微信小程序的效

2、百度小程序的效果:

非常完美的解决了问题。
文章根据:http://www.zyiz.net/tech/detail-104163.html 改编。
来源:https://www.cnblogs.com/puzi0315/p/12271673.html