要求

选项卡每切换一次,就加载对应的一个echarts 图,要有一开始的动画效果
效果如下:

注意点

1、echarts要想每次都能重新加载,需要移除"_echarts_instance_"属性,否则一切换选项卡,就再也加载不出来了
2、在ts 中获取html 页面元素,不能写在构造方法里,应该写在ionViewDidEnter()方法里
3、选项卡<ion-segment> 不要搭配[ngSwitch] 的方式,因为这种情况下,只能获取当前选项卡中的元素,未选中的选项卡里的元素获取不到,在第2步骤ionViewDidEnter() 方法里自然也是获取不到。应当搭配(ionChange)使用方式
4、不能直接将chart作为全局变量,这样的话第二次加载就没有动画效果了

献上代码

html文件

<ion-header>
<ion-navbar>
<ion-title>区域</ion-title>
</ion-navbar> </ion-header> <ion-content padding> <ion-segment [(ngModel)]="choice" (ionChange)="segmentChanged($event)">
<ion-segment-button value="choice1">
省份增速排名
</ion-segment-button>
<ion-segment-button value="choice2">
市州增速排名
</ion-segment-button>
<ion-segment-button value="choice3">
全省走势
</ion-segment-button>
<ion-segment-button value="choice4">
市州占比
</ion-segment-button>
</ion-segment> <div id="chartContainer" style="width: 100%; height: 300px;"></div> </ion-content>

ts文件

import {Component} from '@angular/core';
import * as echarts from 'echarts'; @Component({
selector: 'page-data-area',
templateUrl: 'area.html'
})
export class DataAreaPage {
choice: string = "choice1";
ec: any = echarts;
chartContainer: any; constructor() {
} clickChart1() {
const chart1 = this.ec.init(this.chartContainer);
chart1.setOption({
series: {
type: 'pie',
data: [{
name: 'A',
value: 10
}, {
name: 'B',
value: 20
}, {
name: 'C',
value: 30
}, {
name: 'D',
value: 40
}]
}
}, true);
this.chartContainer.removeAttribute("_echarts_instance_");
} clickChart2() {
const chart2 = this.ec.init(this.chartContainer);
chart2.setOption({
series: {
type: 'pie',
data: [{
name: 'A',
value: 10
}, {
name: 'B',
value: 20
}, {
name: 'C',
value: 30
}]
}
}, true);
this.chartContainer.removeAttribute("_echarts_instance_");
} clickChart3() {
const chart3 = this.ec.init(this.chartContainer);
chart3.setOption({
series: {
type: 'pie',
data: [{
name: 'A',
value: 10
}, {
name: 'B',
value: 20
}, {
name: 'C',
value: 30
}, {
name: 'D',
value: 40
}, {
name: 'E',
value: 50
}]
}
}, true);
this.chartContainer.removeAttribute("_echarts_instance_");
} clickChart4() {
const chart4 = this.ec.init(this.chartContainer);
chart4.setOption({
series: {
type: 'pie',
data: [{
name: 'A',
value: 10
}, {
name: 'B',
value: 20
}, {
name: 'C',
value: 30
}, {
name: 'D',
value: 40
}, {
name: 'E',
value: 50
}, {
name: 'F',
value: 60
}]
}
}, true);
this.chartContainer.removeAttribute("_echarts_instance_");
} segmentChanged(e) {
if (e.value == "choice1") {
this.clickChart1();
} else if (e.value == "choice2") {
this.clickChart2();
} else if (e.value == "choice3") {
this.clickChart3();
} else if (e.value == "choice4") {
this.clickChart4();
}
} ionViewDidEnter() {
this.chartContainer = document.getElementById('chartContainer');
this.clickChart1();
} }

原创文章,欢迎转载,转载请注明出处!

Ionic3实现选项卡切换可以重新加载echarts的更多相关文章

  1. 基于zepto的H5/移动端tab切换触摸拖动加载更多数据

    以前实现移动端的滑动加载更多实现的方法是当滚动条快到页面底部时就自动加载更多的数据,在这方面很多人都用的是"西门的后花园"写的一个叫dropload的插件,这个插件用起来也很好,很 ...

  2. webAPP制作框架Ionic--构建APP侧边栏 底部选项卡 轮播图 加载动画

    超好用的移动框架--Ionic Ionic是一个轻量的手机UI库,具有速度快,界面现代化.美观等特点. 为了解决其他一些UI库在手机上运行缓慢的问题,它直接放弃了IOS6和Android4.1以下的版 ...

  3. 异步加载 Echarts图的数据

    <script src="~/Scripts/NewEcharts/echarts.js"></script> <script type=" ...

  4. 在WinForm应用程序中,使用选项卡控件来加载不同的Form界面!

    TabPage tp=new TabPage(); your选项卡控件.Controls.Add(tp); From1 frm=new Form1(); frm.TopLevel = false; f ...

  5. swiper (Table切换和动态加载时候出现的问题)

    本文为让心灵-去旅行原创,转载请说明.. 我们在写一个简单的swiper图片轮播的时候很简单,是写死的也就那么几张图片轮播.如果这时候图片和一些东西是后台的,你从js里动态添加到DOM时,这时候你就会 ...

  6. android viewpager fragment 优化 切换界面 延时加载

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 使用 碎片的 设置用户可见暗示visible hint  这个方法来做到. hint 是 ...

  7. 35、element ui tab切换加载echarts不显示或显示不全问题解决:

    <el-tabs v-model="activeName" @tab-click="handleClick" type="border-card ...

  8. babel-plugin-equire - 一个按需加载 echarts 模块的 babel 插件

    参考链接:https://juejin.im/entry/5a1c1bc9f265da430d57bd3f?utm_medium=hao.caibaojian.com&utm_source=h ...

  9. layui模块化加载Echarts图表v4.2.1

    layui.use(['jquery','echarts'], function () { var $ = layui.$; //记得这是dom对象不是JQ对象,需要转换 echarts = layu ...

随机推荐

  1. 用HttpClient和用HttpURLConnection做爬虫发现爬取的代码少了的问题

    最近在学习用java来做爬虫但是发现不管用那种方式都是爬取的代码比网页的源码少了很多在网上查了很多都说是inputStream的缓冲区太小而爬取的网页太大导致读取出来的网页代码不完整,但是后面发现并不 ...

  2. ssm知识点总结

    项目名称:教育网—在线调查系统 项目总体流程图: 设计调查:调查-->包裹--->问题(增删改查) 1.调整包裹顺序 2.移动复制包裹 3.深度删除 创建调查流程分析: 主要生成surve ...

  3. iOS QRcode识别及相册图片二维码读取识别

    https://www.jianshu.com/p/48e44fe67c1d 2016.03.30 10:32* 字数 892 阅读 16197评论 5喜欢 34赞赏 1 最近碰到一个用户 在使用我们 ...

  4. [2017BUAA软工助教]第0次作业小结

    BUAA软工第0次作业小结 零.题目 作业链接: This is a hyperlink 一.评分规则 本次作业满分10分: 按时提交有分 一周内补交得0分 超过一周不交或抄袭倒扣全部分数 评分规则如 ...

  5. MySQL 主从同步遇到的问题及解决方案

    在做某个项目的时候,使用主从数据库,master负责update.delete.insert操作,而slave负责select操作. 情景1:发表文章与查看文章 可以认为这个项目是一个博客系统,这里就 ...

  6. windows端玩转docker笔记

    启动docker安装目录下的start.sh------我是windows系统端 1.搜一下资源  docker search ubuntu 2.下载镜像   docker pull ubuntu 3 ...

  7. [转帖]SAP一句话入门:Sales and Distribution

    SAP一句话入门:Sales and Distribution http://blog.vsharing.com/MilesForce/A616565.html SD是Sales and Distri ...

  8. Linux 下面RPM 安装的SQLSERVER 修改字符集的方法

    1. 自己还是太low 2. 遇到问题 先 -h 处理 3. 发现登录报错, 怀疑是字符集的问题: 4. 计划是修改字符集 到 自己的环境可用的状态 使用命令 /opt/mssql/bin/mssql ...

  9. Angular 基本指令

    <!DOCTYPE html><html ng-app><head lang="en"> <meta charset="UTF- ...

  10. Jenkins整合SonarQube代码检测工具

    借鉴博客:https://blog.csdn.net/kefengwang/article/details/54377055 上面这博客写得挺详细的,挺不错.它这个博客没有提供下载的教程,这个博客提供 ...