要求

选项卡每切换一次,就加载对应的一个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. 用Flask+Redis维护Cookies池

    Redis数据库:存储微博账号密码 这里需要购买账号 登录后的cookies:键值对的形式保存 GitHub:https://github.com/LXL-YAN/CookiesPool 视频讲解:h ...

  2. A-Text Reverse(文本反向读)

    多组数据测试,输入t,表示要测几个,每个语句反向输出. 链接 [https://cn.vjudge.net/contest/235390#problem/A] 解: 就是getchar()和gets( ...

  3. UnderWater+SDN论文之五

    Underwater Sensor Networks with Mobile Agents: Experience from the Field Source: LNICST 2013 论文是来自两个 ...

  4. Less or Equal CodeForces - 977C (sort+细节)

    You are given a sequence of integers of length nn and integer number kk. You should print any intege ...

  5. git在vs2017中的使用

    对于习惯了右键提交源代码的道友来说,敲命令行真的蓝瘦香菇.所幸17里集成了Git插件,用起来还是挺方便的. 1.本地安装git,工具还是要有的,主要用于配置环境,ssh配置一下.就不用每次都去连接了. ...

  6. ES使用C#添加和更新文档

    ElasticSearch 使用C#添加和更新文档 这是ElasticSearch 2.4 版本系列的第四篇: 第一篇:ES1:Windows下安装ElasticSearch 第二篇:ES2:Elas ...

  7. Redis集群搭建过程

    我在搭建Redis集群过程中遇到了一些问题,现记录下来. Redis搭建需要在系统中安装好ruby.gem.zlib等工具,可参考https://www.cnblogs.com/wuxl360/p/5 ...

  8. 并发包学习之-atomic包

    一,模拟并发代码: 线程不安全的代码 //并发模拟代码 public class CountExample { //请求总数 public static int clientTotal = 5000; ...

  9. KubeCon CloudNativeCon China 2019

    KubeCon CloudNativeCon China 2019 - LF Asia, LLChttps://events.linuxfoundation.cn/events/kubecon-clo ...

  10. nmon for Linux & Java

    nmon for Linux | Main / HomePagehttp://nmon.sourceforge.net/pmwiki.php Java Nmon Analyser download | ...