一、问题描述:

在小程序的项目中,封装公共的饼图组件,并在需要的页面引入使用。要求一个页面中有多个饼图,动态渲染不同的数据。

二、效果实现:

1. 查看——小程序使用Echarts的方式

2. 封装饼图公共组件

// pie.wxml

<view class="containers">
<ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}" tuData="{{ pieData }}"></ec-canvas> // tuData是自定义的
</view>
// pie.json

{
"usingComponents": {
"ec-canvas": "../../ec-canvas/ec-canvas" // 下载的微信版Echarts
},
"component": true
}
// pie.js

import * as echarts from '../../ec-canvas/echarts';

function initChart(canvas, width, height, dpr, pieData) { // 这里多加了pieData参数
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // 像素
});
canvas.setChart(chart);
// console.log('数据:',pieData)
// pieData为页面传过来的数组数据:[[分类],[分类颜色],[标签字大小,标签字颜色],分类一数据,分类二数据]
let option = {
title: {},
tooltip: {
trigger: 'item',
formatter: '{b} : {c}'
},
legend: {
left: 'center',
bottom: 20,
textStyle: {
fontSize: pieData[2][0],
color: pieData[2][1]
},
data: pieData[0]
},
color: pieData[1],
// color: ['#FD7031','#00d6a5'],
series: [{
name: '客户',
type: 'pie',
radius: '60%',
center: ["45%", "38%"],
label: {
position: 'inner',
show: true,
formatter: '{c}'
},
data: [{
value: pieData[3] ? pieData[3] : 0,
name: pieData[0][0],
// name: '已联系客户',
formatter: '{c}',
tooltip: {
trigger: 'item',
formatter: '{b} : {c}'
}
},
{
// name: '未联系客户',
value: pieData[4] ? pieData[4] : 0,
name: pieData[0][1],
formatter: '{c}',
tooltip: {
trigger: 'item',
formatter: '{b} : {c}'
}
}
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
},
}]
};
chart.setOption(option);
return chart;
} Component({
// 接收页面传递过来的 pieData 饼图数据
properties: {
pieData: {
type: Array
}
},
data: {
ec: {
onInit: initChart
}
}
})

3. Page页面遍历 pie 饼图组件,并传过去需要的数据

(1) 通过 showPie 控制是否使用 pie 组件,当饼图有数据时使用,当切换页面时销毁。这是为了解决展示的饼图无法更新数据的问题。

(2) 成功从接口获取到饼图数据后,为页面每个饼图需要用到的要传递的 pieData 数据赋值。

4. 修改ec-canvas.js文件 (这个文件是从echarts官网下载的)

(1) 在wxml文件里,引用ec-canvas组件时,传了个tuData参数过去,所以我们需要在组件内部接收一下,在ec-canvas.js文件里面找到properties对象。

(2) 找到init方法,将tuData传入onInit方法里。

【小程序】---- 封装Echarts公共组件,遍历图表实现多个饼图的更多相关文章

  1. 微信小程序封装年月日时分组件

    第一步,在page下新建component文件,放你封装的小组件,和vue里的component差不多 第二步,在需要使用的组件的.json文件中添加usingComponents 第三步,在页面中引 ...

  2. 微信小程序引入ECharts组件

    首先打开ECharts网页 https://echarts.apache.org/zh/tutorial.html#%E5%9C%A8%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8 ...

  3. 微信小程序使用 ECharts 实现数据可视化

    微信小程序使用 ECharts 显示图表 首先创建微信小程序 这里就不再赘述 下载 GitHub 上的 ecomfe/echarts-for-weixin 下载后解压,打开文件夹,里面的 ec-can ...

  4. 微信小程序使用echarts/数据刷新重新渲染/图层遮挡问题

    1.微信小程序使用echarts,首先下载echarts并导入小程序项目中,因小程序后期上线对文件大小有要求,所以建议进行定制下载导入可减少文件大小占比,也可以下载以前旧版本文件比较小的应付使用 下载 ...

  5. 微信小程序开发—快速掌握组件及API的方法

    微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支 ...

  6. 微信小程序开发—快速掌握组件及API的方法---转载

    微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支 ...

  7. [小程序开发] 微信小程序audio音频播放组件+api_wx.createAudioContext

    引言: audio是微信小程序中的音频组件,可以轻松实现小程序中播放/停止音频等自定义动作. 附上微信小程序audio组件的相关属性说明:https://mp.weixin.qq.com/debug/ ...

  8. 小程序 模态对话框自定义组件(modal)

    1. 概述 1.1 说明 小程序中使用wx.showModal(Object object)打开一个模态对话框,但是目前小程序所提供的modal中的内容显示比较死板,不能够完全满足工作中所遇到的功能信 ...

  9. 微信小程序封装storage(含错误处理)

    这次给你们安利的是微信小程序封装storage,先说下微信官方的 wx.getStorage({ key:"", success: function (res) { }, fail ...

随机推荐

  1. LeetCode 861翻转矩阵后得分详细解法

    1. 题目内容 有一个二维矩阵 A 其中每个元素的值为 0 或 1 . 移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0. 在做出任意次数的移动后 ...

  2. web基础(四)严格模式与混杂模式

    web基础(四)严格模式与混杂模式 一.介绍 DOCTYPE 标签是一种标准通用标记语言的文档类型声明,它的目的是要告诉标准通用标记语言解析器,它应该使用什么样的文档类型定义(DTD)来解析文档.DO ...

  3. 当Notification和Websocket遇到https、http

    @ 目录 一.http转为https请求 (1)生成证书1(crt证书转tomcat使用的jks) (2)配置证书1 (3)生成证书2 (4)配置证书2 二.Websocket改为https连接 后言 ...

  4. 使用树莓派搭建LoRaWAN网关并接入腾讯云物联网开发平台

    安装树莓派环境 制作镜像 下载img文件烧录器 传送门:img文件烧录器地址,下载完成之后双击安装 下载镜像文件 传送门:树莓派系统镜像 推荐下载这个版本的img,因为有桌面,并且大小适中. 下载完之 ...

  5. 图神经网络 PyTorch Geometric 入门教程

    简介 Graph Neural Networks 简称 GNN,称为图神经网络,是深度学习中近年来一个比较受关注的领域.近年来 GNN 在学术界受到的关注越来越多,与之相关的论文数量呈上升趋势,GNN ...

  6. 文章目录&友情链接

    文章目录&友情链接 1:<公告:本博客开始写博文了> 2.本人网络图书馆

  7. 8.oracle 表查询

    演示如何使用select语句,接下来对emp.dept.salgrade表结构进行解说. emp 雇员表 字段名称 数据类型 是否为空 备注 -------- ----------- -------- ...

  8. MapReduce框架原理

    MapReduce框架原理 3.1 InputFormat数据输入 3.1.1 切片与MapTask并行度决定机制 1.问题引出 MapTask的并行度决定Map阶段的任务处理并发度,进而影响到整个J ...

  9. 使用 Swift Package Manager 集成依赖库

      本文首发于 Ficow Shen's Blog,原文地址: 使用 Swift Package Manager 集成依赖库.   内容概览 前言 添加依赖包 在项目中使用依赖 管理已导入的依赖 在团 ...

  10. 攻防世界——Misc新手练习区解题总结<2>(5-8题)

    第五题gif: 下载附件后,解压得到这样一个文件 几经寻找无果后,发现是不是可以将gif中的黑白图片看做二进制的数字,进而进行解密 最后用二进制转文本得到flag 第六题掀桌子: 看起来是16进制的密 ...