如何通过单击Ext.js中的按钮来更改图表的宽度?

问题描述

我在图表中添加了两个按钮:“缩放-”和“缩放+”。当用户单击按钮时,我想更改图表的宽度。但是图表的宽度不会改变。当用户单击按钮“ Scale +”时,我想增加图表的宽度,并且当用户单击按钮“ Scale-”时,我想减小图表的宽度。 ,例如10%。

<!DOCTYPE html>
<html>
   <head>
      <link href = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-classic/resources/theme-classic-all.css" 
         rel = "stylesheet" />
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/ext-all.js"></script>
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/packages/charts/classic/charts.js"></script>
      <link href = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/packages/charts/classic/classic/resources/charts-all.css" 
         rel = "stylesheet" />
      
      <script type = "text/javascript">
         Ext.onReady(function() {
            Ext.create('Ext.chart.CartesianChart',{
               renderTo: document.body,width: 600,height: 200,store: {
                  fields: ['name','g1','g2'],data: [
                     {"name": "Item-0","g1": 57,"g2": 59},{"name": "Item-1","g1": 45,"g2": 50},{"name": "Item-2","g1": 67,"g2": 43},{"name": "Item-3","g2": 18},{"name": "Item-4","g1": 30,"g2": 90}
                  ]
               },legend: {
                  docked: 'bottom'
               },//define x and y axis.
               axes: [{
                  type: 'numeric',position: 'left'
               },{
                  type: 'category',visibleRange: [0,1],position: 'bottom'
               }],//define the actual series
               series: [{
                  type: 'line',xField: 'name',yField: 'g1',title: 'normal'
               },{
                  type: 'line',yField: 'g2',title: 'Smooth'
               }],dockedItems: [
        {
            xtype: 'toolbar',flex: 1,dock: 'bottom',ui: 'footer',layout: {
                pack: 'end',type: 'hBox'
            },items: [
                {
                    xtype: 'button',text: 'Scale -',itemId: 'ScaleDec',handler : function()
                    {                   
                            this.width = 100;
                            this.reload();
                    },},{
                    xtype: 'button',text: 'Scale +',itemId: 'ScaleInc',handler : function()
                    {                   
                            this.width = 1000;
                            this.reload();
                    },}
            ]
        }
    ],});
         });
      </script>
   </head>
   
   <body>
   </body>
</html>

解决方法

<script type = "text/javascript">
      var width = 1000;
         Ext.onReady(function() {
           var myChart = Ext.create('Ext.chart.CartesianChart',{
               renderTo: document.body,width: 600,height: 200,store: {
                  fields: ['name','g1','g2'],data: [
                     {"name": "Item-0","g1": 57,"g2": 59},{"name": "Item-1","g1": 45,"g2": 50},{"name": "Item-2","g1": 67,"g2": 43},{"name": "Item-3","g2": 18},{"name": "Item-4","g1": 30,"g2": 90}
                  ]
               },legend: {
                  docked: 'bottom'
               },//define x and y axis.
               axes: [{
                  type: 'numeric',position: 'left'
               },{
                  type: 'category',visibleRange: [0,1],position: 'bottom'
               }],//define the actual series
               series: [{
                  type: 'line',xField: 'name',yField: 'g1',title: 'Normal'
               },{
                  type: 'line',yField: 'g2',title: 'Smooth'
               }],dockedItems: [
        {
            xtype: 'toolbar',flex: 1,dock: 'bottom',ui: 'footer',layout: {
                pack: 'end',type: 'hbox'
            },items: [
                {
                    xtype: 'button',text: 'Scale -',itemId: 'ScaleDec',handler : function()
                    {                   
                        width = width - width * 0.1;
                        myChart.setWidth(width);
                    },scope: this,},{
                    xtype: 'button',text: 'Scale +',itemId: 'ScaleInc',handler : function()
                    {                   
                        width = width + width * 0.1;
                        myChart.setWidth(width);
                    },}
            ]
        }
    ],});
         });
      </script>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...