这里有新鲜出炉的 vue.js 教程,程序狗速度看过来!
Vue.js 是构建 web 界面的 JavaScript 库,提供数据驱动的组件,还有简单灵活的 API,使得 MVVM 更简单。
本篇文章主要介绍了 vue.js+Echarts 开发图表放大缩小功能实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
最近使用 echarts 来开发某系统的图表功能,先申明我以前用的 ext.js,ext.js 对图表有自己的一套组件,用起来也很方便。但是由于 ext.js 过于臃肿,公司决定使用 echarts 来开发图表功能。当我们使用的时候才悲催的发现,echart 绘制之后,不能随着容器 div 的大小而变化。而我们所开发的图表是需要有放大缩小功能,于是在网上找了很久,也没有找到合适的答案,大部分是通过监听窗口大小改变事件来设置,然而并不是我们所需要的。于是自己用了一点点时间,了解了为何 echarts 不能重新渲染,原来是在容器 div 里面设置了标记,每个 div 容器只能被渲染一次。知道原因之后,就容易了,就写了一个简单的 demo。希望可以帮到有需要的同学。
html 代码:
- <!doctype html>
- <html>
- <head>
- <title>vue+chart</title>
- <script src="echarts.min.js"></script>
- <script src="vue.js"></script>
- <style>
- .button{
- float:left;
- width:150px;
- height:60px;
- color:#CC3333;
- border:2px solid #CC3333;
- background-color:#3399CC;
- line-height:60px;
- text-align:center;
- font-size:36px;
- }
- .button:hover{
- float:left;
- width:150px;
- height:60px;
- color:#3399CC;
- border:2px solid #3399CC;
- background-color:#CC3333;
- line-height:60px;
- text-align:center;
- font-size:36px;
- }
- .chart{
- margin:0 auto;
- }
- #but{
- width:310px;
- margin:0 auto;
- }
- </style>
- </head>
- <body>
- <div id="app">
- <div id="panel">
- <div class="chart" id="main" style="width:300px;height:300px"></div>
- </div>
- <div id="but">
- <div id="add" class="button" @click="add">放大</div>
- <div id="reduce" class="button" @click="reduce">缩小</div>
- </div>
- </div>
- </body>
- </html>
js 代码:
- var vm=new Vue({
- el:"#app",
- data:{
- size:300,
- },
- computed: {
- style: function () {
- return "width:"+this.width+"px;height:"+this.height+"px"
- }
- },
- methods:{
- add:function(){
- if(this.size<900){
- this.size=this.size+50;}
- else{
- this.size=900;
- }
- },
- reduce:function(){
- if(this.size>300){
- this.size=this.size-50;}
- else{
- this.size=300;
- }
- }
- }
- })
- var myChart = echarts.init(document.getElementById('main'));
- var option = {
- title: {
- text: 'ECharts 入门'
- },
- tooltip: {},
- legend: {
- data:['销量']
- },
- xAxis: {
- data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
- },
- yAxis: {},
- series: [{
- name: '销量',
- type: 'bar',
- data: [5, 20, 36, 10, 10, 20]
- }]
- };
- myChart.setOption(option);
- // 基于准备好的dom,初始化echarts实例
- vm.$watch("size",function(newVal, oldVal){
- var dom=document.getElementById('panel')
- dom.innerHTML='<div class="chart" id="main" style="width:'+newVal+'px;height:'+newVal+'px"></div>';
- var myChart = echarts.init(document.getElementById('main'));
- myChart.setOption(option);
- })
来源: http://www.phperz.com/article/17/0708/336248.html