2011-06-23 10 views
1

ext-all-sandbox.jsを使用して既存のExt3アプリケーションにExt4チャートを追加しようとしています。私は基礎が働いているが、下のコードはaxis.processView is not a functionを与える。定義された軸がなくてもうまく動作します(ただし軸は明白です)。ExtJS 3アプリケーションでExtJS 4グラフを使用する

実際の軸インスタンスを作成する代わりに、configオブジェクトが直接使用されているようです。これを実現するソリューションはありますか?ソースをざっと見た後

TestGraphPanel = Ext.extend(Ext.Panel, { 
    initComponent: function() { 
     TestGraphPanel.superclass.initComponent.call(this); 

     Ext4.define('DataPoint', { 
      extend: 'Ext.data.Model', 
      fields: ['xValue', 'yValue'] 
     }); 

     this.store = Ext4.create('Ext.data.Store', { 
      model: 'DataPoint', 
      data: [ 
       {xValue: 0, yValue: 2}, 
       {xValue: 1, yValue: 4}, 
       {xValue: 2, yValue: 7}, 
       {xValue: 3, yValue: 5}, 
       {xValue: 4, yValue: 8}, 
       {xValue: 5, yValue: 9} 
      ] 
     }); 
    }, 

    afterRender: function() { 
     Ext4.create('Ext.chart.Chart', { 
      renderTo: this.body.dom, 
      width: this.ownerCt.getWidth(), 
      height: this.ownerCt.getHeight(), 
      store: this.store, 
      axes: [ 
       { 
        title: 'x', 
        type: 'Numeric', 
        postition: 'bottom', 
        fields: ['xValue'] 
       }, 
       { 
        title: 'y', 
        type: 'Numeric', 
        position: 'left', 
        fields: ['yValue'] 
       } 
      ], 
      series: [ 
       { 
        type: 'line', 
        xField: 'xValue', 
        yField: 'yValue' 
       } 
      ] 
     }); 
    } 
}); 

答えて

0

、私はあなたの問題はあなたがafterRenderであなたのチャートを作成しているという事実から来るかもしれないと思います。

私は、設定オブジェクトが直前に解析され

特定

//process all views (aggregated data etc) on stores 
//before rendering. 
me.axes.each(function(axis) { 
    axis.processView(); 
}); 
にこれらの行を考えています。それ以外の場合は、そこにブレークポイントを設定してオブジェクトをチェックしてみてください。

+0

あなたはチャートを作成し、afterRender?でchart.render()をコールするだけです。 – OrangeDog

+0

あなたはrenderToを設定しているので、明示的にrenderを呼び出す必要はないと思いますが、基本的にはyesです。 – Jad

+0

レンダリングは必ず削除する必要があります。それ以外の場合は、divが存在する前にレンダリングを試みます。 – OrangeDog