Ionic3实现选项卡切换可以重新加载echarts
要求
选项卡每切换一次,就加载对应的一个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的更多相关文章
- 基于zepto的H5/移动端tab切换触摸拖动加载更多数据
		
以前实现移动端的滑动加载更多实现的方法是当滚动条快到页面底部时就自动加载更多的数据,在这方面很多人都用的是"西门的后花园"写的一个叫dropload的插件,这个插件用起来也很好,很 ...
 - webAPP制作框架Ionic--构建APP侧边栏 底部选项卡  轮播图  加载动画
		
超好用的移动框架--Ionic Ionic是一个轻量的手机UI库,具有速度快,界面现代化.美观等特点. 为了解决其他一些UI库在手机上运行缓慢的问题,它直接放弃了IOS6和Android4.1以下的版 ...
 - 异步加载 Echarts图的数据
		
<script src="~/Scripts/NewEcharts/echarts.js"></script> <script type=" ...
 - 在WinForm应用程序中,使用选项卡控件来加载不同的Form界面!
		
TabPage tp=new TabPage(); your选项卡控件.Controls.Add(tp); From1 frm=new Form1(); frm.TopLevel = false; f ...
 - swiper (Table切换和动态加载时候出现的问题)
		
本文为让心灵-去旅行原创,转载请说明.. 我们在写一个简单的swiper图片轮播的时候很简单,是写死的也就那么几张图片轮播.如果这时候图片和一些东西是后台的,你从js里动态添加到DOM时,这时候你就会 ...
 - android viewpager fragment 优化 切换界面 延时加载
		
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 使用 碎片的 设置用户可见暗示visible hint 这个方法来做到. hint 是 ...
 - 35、element ui tab切换加载echarts不显示或显示不全问题解决:
		
<el-tabs v-model="activeName" @tab-click="handleClick" type="border-card ...
 - babel-plugin-equire - 一个按需加载 echarts 模块的 babel 插件
		
参考链接:https://juejin.im/entry/5a1c1bc9f265da430d57bd3f?utm_medium=hao.caibaojian.com&utm_source=h ...
 - layui模块化加载Echarts图表v4.2.1
		
layui.use(['jquery','echarts'], function () { var $ = layui.$; //记得这是dom对象不是JQ对象,需要转换 echarts = layu ...
 
随机推荐
- centos7 关闭selinux
			
关闭SeLinux 临时关闭:setenforce 0 永久关闭:vi /etc/selinux/config
 - 【转载】SQL中inner join、outer join和cross join的区别
			
对于SQL中inner join.outer join和cross join的区别很多人不知道,我也是别人问起,才查找资料看了下,跟自己之前的认识差不多, 如果你使用join连表,缺陷的情况下是inn ...
 - Python学习第九篇——while和for的区别
			
pets = ['dog','cat','dog','goldfish','cat','rabbit','cat'] print(pets) for pet in pets: print(pet) # ...
 - centos开启ftp服务的步骤
			
1.安装vsftpd sudo yum install vsftpd -y 2.启动ftp服务 service vsftpd start 3. 加入开机启动 chkconfig vsftpd on ...
 - 论学习IT的基本学习方法
			
学习还是要通过实践总结这种方式去不断进步,当然这个思想对于生活中的任何事都是相通的,就像我现在做的就是总结一下自己的学习方法,更多的是针对于IT代码这块知识的总结. 我想通过这种博客总结的方式来不断总 ...
 - 社交CRM SCRM
			
社交CRM - 国际版 Binghttps://cn.bing.com/search?FORM=U227DF&PC=U227&q=%E7%A4%BE%E4%BA%A4CRM 社交CRM ...
 - 使用 Drools 和 JPA & Drools show case in docker hub
			
使用 Drools 和 JPA 实现持续的实时数据分析https://www.ibm.com/developerworks/cn/java/j-drools5/index.html Drools - ...
 - 网站之.htaccess文件
			
Apache系统中的.htaccess文件(分布式配置文件)提供了针对目录改变配置的方法,也就是在一个特定的文件目录中放置一个包含指令的文件,以作用于此目录以及所有子目录.直白的说,.htaccess ...
 - jmeter环境配置
			
Java 8 安装 正常安装,一路默认就好,记住安装路径,配置环境变量时用得到.默认安装路径:C:\Program Files\Java\jdk1.8.0_91. 安装好之后会有两个文件夹一个是jdk ...
 - PreparedStatement 与 Statement 的区别
			
1. PreparedStatement 接口继承 Statement, PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象. 2.作为 ...