微信小程序小结(3) -- 使用wxParse解析html及多数据循环
wxParse-微信小程序富文本解析组件:https://github.com/icindy/wxParse
支持Html及markdown转wxml可视化
使用
1、copy下载好的文件夹wxParse
- wxParse/
-wxParse.js(必须存在)
-html2json.js(必须存在)
-htmlparser.js(必须存在)
-showdown.js(必须存在)
-wxDiscode.js(必须存在)
-wxParse.wxml(必须存在)
-wxParse.wxss(必须存在)
-emojis(可选)
2、分别在相应的文件中引入:
let WxParse = require("../../utils/wxParse/wxParse.js");
@import "../../utils/wxParse/wxParse.wxss";
<import src="../../utils/wxParse/wxParse.wxml"/>
3、使用方法
- 数据绑定
var article ="<div>我是HTML代码</div>";
/**
* WxParse.wxParse(bindName , type, data, target,imagePadding)
* 1.bindName绑定的数据名(必填)
* 2.type可以为html或者md(必填)
* 3.data为传入的具体数据(必填)
* 4.target为Page对象,一般为this(必填)
* 5.imagePadding为当图片自适应是左右的单一padding(默认为0,可选)
*/
var that = this;
WxParse.wxParse('article', 'html', article, that, 5);
- 模版引用
// 引入模板
<import src="你的路径/wxParse/wxParse.wxml"/>
//这里data中article为bindName
<template is="wxParse" data="{{wxParseData:article.nodes}}"/>
wxParse多数据循环使用方法
多条HTML共同渲染的方法
/**
* WxParse.wxParseTemArray(temArrayName,bindNameReg,total,that)
* 1.temArrayName: 为你调用时的数组名称
* 3.bindNameReg为循环的共同体 如绑定为reply1,reply2...则bindNameReg = 'reply'
* 3.total为reply的个数
*/
var that = this;
WxParse.wxParseTemArray("replyTemArray",'reply', replyArr.length, that)
循环绑定数据
var replyHtml0 = "<div style="margin-top:10px;height:50px;">
<p class="reply">
wxParse回复0:不错,喜欢[03][04]
</p>
</div>";
var replyHtml1 = "<div style="margin-top:10px;height:50px;">
<p class="reply">
wxParse回复1:不错,喜欢[03][04]
</p>
</div>";
var replyHtml2 = "<div style="margin-top:10px;height:50px;">
<p class="reply">
wxParse回复2:不错,喜欢[05][07]
</p>
</div>";
var replyHtml3 = "<div style="margin-top:10px;height:50px;">
<p class="reply">
wxParse回复3:不错,喜欢[06][08]
</p>
</div>";
var replyHtml4 = "<div style="margin-top:10px; height:50px;">
<p class="reply">
wxParse回复4:不错,喜欢[09][08]
</p>
</div>";
var replyHtml5 = "<div style="margin-top:10px;height:50px;">
<p class="reply">
wxParse回复5:不错,喜欢[07][08]
</p>
</div>";
var arr = [];
arr.push(replyHtml0);
arr.push(replyHtml1);
arr.push(replyHtml2);
arr.push(replyHtml3);
arr.push(replyHtml4);
arr.push(replyHtml5);
for (let i = 0; i < arr.length; i++) {
WxParse.wxParse('reply' + i, 'html', arr[i], that);
if (i === arr.length - 1) {
WxParse.wxParseTemArray("replyTemArray",'reply', arr.length, that)
}
}
模版使用
<block wx:for="{{replyTemArray}}" wx:key="">
列表:{{index}}:<template is="wxParse" data="{{wxParseData:item}}"/> //无需其他直接wxParseData:item(即使时item.htm)
</block>
注意列表的渲染只是单纯的渲染,无法动态的数据同时渲染。
解决方案:
//第一次列表赋值
this.setData({
list:listRes
})
let that=this;
for (let i = 0; i < listRes.length; i++) {
WxParse.wxParse('topic' + i, 'html', listRes[i].topic, that);
if (i === listRes.length - 1) {
WxParse.wxParseTemArray("list",'topic', listRes.length, that)
}
}
//根据上述操作,list的原有数据会被清楚,因此下面重新赋值相关的数据即可
let list=this.data.list;
list.map((item,index,arr)=>{
arr[index][0].name='abc'; //对应的时使用WxParse后的结构
arr[index][0].no=index;
});
//重新赋值
this.setData({
list:list
})
//使用
<view wx:key="{{item.no}}" wx:for="{{list}}">
<text >第{{item[0].no}}题</text>
<text >姓名:{{item[0].name}}</text>
<template is="wxParse" data="{{wxParseData:item}}"/>
</view>
微信小程序小结(3) -- 使用wxParse解析html及多数据循环的更多相关文章
- 微信小程序语音识别服务搭建全过程解析(项目开源在github)
silk v3录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) ## 重要的写在前面 重要事项一: 目前本文中提到的API已支持微信小程序录音文件格式:silk v ...
- 微信小程序语音识别服务搭建全过程解析(https api开放,支持新接口mp3录音、老接口silk录音)
silk v3(或新录音接口mp3)录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) 重要的写在前面 重要事项一: 所有相关更新,我优先更新到我个人博客中,其它地方 ...
- 用Vue.js开发微信小程序:开源框架mpvue解析
前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...
- 微信小程序小结(5) -- 常用语法
在 pages 字段的第一个页面就是这个小程序的首页(打开小程序看到的第一个页面). Page生命周期 属性 类型 描述 onLoad Function 生命周期函数--监听页面加载.一个页面只会调用 ...
- 微信小程序小结(1) ------ 前后端交互及wx.request的简易封装
微信小程序的应用目前越来越多,不管喜欢与否我们都应该了解一些.废话不多,直接干货. 做项目自然避免不了前后端的交互,小程序在调试过程中需要在先在:小程序公众平台--设置--开发设置中,将要从后台请求的 ...
- 微信小程序小结02-- 完整的demo
小程序确实方便,在移动端方便小个体宣传,不需要服务器和域名,还有客服功能.按朋友的意思,做了一次调整,分成了首页.预约和我的三个页面. 下面说下遇到的几个问题. 01.客服功能 不得不说这个一条龙服务 ...
- 微信小程序小结
前几日抽空看了下小程序,发现挺好玩的,mvvm的结构,语法比vue要简单,内置了一系列的组件,很方便.然后开发者工具直接上传代码,提交审核,然后发布,感觉挺好.虽然不打算做个工具类的,但是做个介绍类小 ...
- 微信小程序小结(2) ------ 自定义组件
在小程序中有模板跟组件的概念.但模板更多的用于内容的展示,更复杂的交互逻辑就没办法了.所以在小程序中也定义了一些组件来解决一些简单逻辑的功能. 但有时预定义的组件并不能满足我们的需求,这时就需要我们自 ...
- 微信小程序小结(4) -- 分包加载及小程序间跳转
分包加载 某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载(主要是空间不够用,哈哈~). 在构建小程序分包项目时,构建会输出一个或多个功能的分包,其中 ...
随机推荐
- User Agent注入攻击及防御
CloudFlare公司经常会收到客户询问为什么他们的一些请求会被 CloudFlare WAF屏蔽.最近,一位客户就提出他不能理解为什么一个访问他主页简单的 GET 请求会被 WAF 屏蔽. 下面是 ...
- django-pagination分页
1. 将该APP安装至Django项目中.(settings.py) INSTALLED_APPS = ( # ... 'pagination', ) 2. 在Django项目的middleware中 ...
- Bootstrap-菜单,导航,按钮
1.下拉菜单(基本用法) 在Bootstrap框架中的下拉菜单组件是一个独立的组件,根据不同的版本,它对应的文件: ☑ LESS版本:对应的源码文件为 dropdowns.less ☑ Sass版 ...
- 关于MFC主菜单和右键弹出菜单
一.主菜单.弹出菜单和右键菜单的概念: 主菜单是窗口顶部的菜单,一个窗口或对话框只能有一个主菜单,但是主菜单可以被更改(SetMenu()更改): 创建方式:CMenu::CreateMenu(voi ...
- 详细详解One Hot编码-附代码
机器学习算法无法直接用于数据分类.数据分类必须转换为数字才能进一步进行. 在本教程中,你将发现如何将输入或输出的序列数据转换为一种热编码,以便于你在Python中深度学习的序列分类问题中使用.本教程分 ...
- 设置Suse linux 用户远程登录超时时间
执行 # echo "export TMOUT=900" >> /etc/profile 查询设置结果: # cat /etc/profile|grep TMOU ...
- bzoj 3611: [Heoi2014]大工程 虚树
题目: 国家有一个大工程,要给一个非常大的交通网络里建一些新的通道. 我们这个国家位置非常特殊,可以看成是一个单位边权的树,城市位于顶点上. 在 2 个国家 a,b 之间建一条新通道需要的代价为树上 ...
- [转]PNG8和PNG24的区别
首先我们要知道: 1.png8和png24的根本区别,不是颜色位的区别,而是存储方式不同. 2.png8有1位的布尔透明通道(要么完全透明,要么完全不透明),png24则有8位(256阶)的布尔透明通 ...
- Operating System-Process(1)什么是进程&&进程的创建(Creation)&&进程的终止(Termination)&&进程的状态(State)
本文阐述操作系统的核心概念之一:进程(Process),主要内容: 什么是进程 进程的创建(Creation) 进程的终止(Termination) 进程的状态(State) 一.什么是进程 1.1 ...
- TVYJ1266:费解的开关
我对状态空间的理解:https://www.cnblogs.com/AKMer/p/9622590.html 题目传送门:http://www.joyoi.cn/problem/tyvj-1266 这 ...