0

Sencha Touch 2.3.1 コマンド: 4.0.XX

Sencha Touch Charts アプリがチャートを描画しようとすると、このエラーがスローされます。

キャッチされていない TypeError: オブジェクト [オブジェクト オブジェクト] にメソッド 'getShowInLegend' がありません AbstractChart.js?_dc=1395914109534:649
Ext.define.refreshLegendStore AbstractChart.js?_dc=1395914109534:
649 877
セッター sencha-touch-all-debug.js:5491
Base.implement.initConfig sencha-touch-all-debug.js:4920
Ext.define.constructor sencha-touch-all-debug.js:22651
Base.implement.callParent sencha-touch-all-debug.js:4656
Ext.define.constructor sencha-touch-all-debug.js:32375
Base.implement.callSuper sencha-touch-all-debug.js:4735
Ext.define.constructor コンポーネント。 js?_dc=1395914109519:100
Base.implement.callSuper sencha-touch-all-debug.js:4735
Ext.define.constructor AbstractChart.js?_dc=1395914109534:626
Class sencha-touch-all-debug.js:5208
(無名関数) VM14212:3
Ext.ClassManager.instantiate sencha-touch-all-debug.js:6936
Ext .ClassManager.instantiateByAlias sencha-touch-all-debug.js:6848
Ext.apply.factory sencha-touch-all-debug.js:9980
Ext.define.factoryItem sencha-touch-all-debug.js:32637
Ext.define .add sencha-touch-all-debug.js:32714
Ext.define.applyItems sencha-touch-all-debug.js:32538
セッター sencha-touch-all-debug.js:5482
(無名関数) sencha-touch-all -debug.js:5516
Ext.define.applyActiveItem sencha-touch-all-debug.js:33208
(匿名関数) sencha-touch-all-debug.js:16565
Base.implement.initConfig sencha-touch-all-debug.js:4920
Ext.define.constructor sencha-touch-all-debug.js:22651
Base.implement.callParent sencha-touch-all-debug.js:4656
Ext. define.constructor sencha-touch-all-debug.js:32375
Class sencha-touch-all-debug.js:5208
(匿名関数) VM14212:3
Ext.ClassManager.instantiate sencha-touch-all-debug.js:6936
Ext .ClassManager.instantiateByAlias sencha-touch-all-debug.js:6848
Ext.apply.factory sencha-touch-all-debug.js:9980
Ext.define.factoryItemWithDefaults sencha-touch-all-debug.js:32683
Ext.define .add sencha-touch-all-debug.js:32707
Ext.define.applyItems sencha-touch-all-debug.js:32538
セッター sencha-touch-all-debug.js:5482
(無名関数) sencha-touch-all-debug.js:5516
Ext.define.applyActiveItem sencha-touch-all-debug.js:33208
Base.implement.callParent sencha- touch-all-debug.js:4656
Ext.define.applyActiveItem sencha-touch-all-debug.js:46269
(匿名関数) sencha-touch-all-debug.js:16565
Base.implement.initConfig sencha-touch-all -debug.js:4920
Ext.define.constructor sencha-touch-all-debug.js:22651
Base.implement.callParent sencha-touch-all-debug.js:4656
Ext.define.constructor sencha-touch-all-debug .js:32375
クラス sencha-touch-all-debug.js:5208
(無名関数) VM14212:3
Ext.ClassManager.instantiate sencha-
touch-all-debug.js:6936 Ext.ClassManager.instantiateByAlias sencha-touch-all-debug.js:6848 Ext.apply.factory sencha-touch-all- debug.js
:9980
define.factoryItem sencha-touch-all-debug.js:32637
Ext.define.add sencha-touch-all-debug.js:32714
doCharts doCharts.js:394
Ext.Ajax.request.success standardFunctions.js:166
Ext. apply.callback sencha-touch-all-debug.js:10268
Ext.define.onComplete sencha-touch-all-debug.js:35765 Ext.define.onStateChange
sencha-touch-all-debug.js:35709
(無名関数)

グラフは次のビューにレンダリングされます。

Ext.define('dashboards.view.Main', {
    extend: 'Ext.Panel',
    requires: [
        'Ext.chart.*',
        'Ext.draw.sprite.Sector',
        'Ext.chart.Chart', 
        'Ext.chart.series.Column',
        'Ext.chart.AbstractChart',
        'Ext.chart.SpaceFillingChart',
        'Ext.dataview.component.Container',
        'Ext.chart.series.Series',
        'Ext.chart.series.Gauge',
        'Ext.carousel.Indicator',
        'Ext.carousel.Infinite',
        'Ext.carousel.Item',
        'Ext.carousel.Carousel',
        'Ext.fx.easing.EaseOut',
        'Ext.util.TranslatableGroup',
        'Ext.chart.series.Cartesian',
        'Ext.chart.series.Area',
        'Ext.chart.Label',
        'Ext.chart.Highlight',
        'Ext.chart.Callout',
        'Ext.chart.Transformable',
        'Ext.chart.series.ItemEvents',
        'Ext.chart.theme.Style',
        'Ext.draw.Color', 
        'Ext.chart.series.Bar',
        'Ext.chart.series.Column',
        'Ext.chart.axis.Gauge',
        'Ext.chart.theme.Base',
        'Ext.chart.theme.Base',
        'Ext.chart.theme.TitleStyle',
        'Ext.chart.theme.GridStyle',
        'Ext.chart.Toolbar',
        'Ext.chart.legend.View',
        'Ext.chart.Legend',
        'Ext.chart.axis.Numeric',
        'Ext.chart.axis.Category',
        'Ext.draw.Surface',
        'Ext.draw.Draw',
        'Ext.draw.Matrix',
        'Ext.draw.engine.Canvas',
        'Ext.draw.CompositeSprite',
        'Ext.fx.Frame',
        'Ext.draw.Sprite',
        'Ext.fx.Sprite',
        'Ext.draw.sprite.Sector',
        'Ext.draw.sprite.Rect',
        'Ext.chart.interactions.Abstract',
        'Ext.chart.axis.Axis',
        'Ext.chart.axis.Abstract',
        'Ext.util.SizeMonitor',
        'Ext.chart.grid.HorizontalGrid','Ext.chart.grid.VerticalGrid','Ext.draw.fx.TimingFunctions','Ext.Container','Ext.TitleBar','Ext.data.Store','Ext.data.StoreManager'
        ],
    alias: 'widget.mainview',
    id: 'mainpage',
    getSlideLeftTransition: function () {
        return { type: 'slide', direction: 'left' };
    },

    getSlideRightTransition: function () {
        return { type: 'slide', direction: 'right' };
    },
    config: {
        layout: {
            type: 'fit'
        },
        items: [
            {
                 xtype : 'container',
                 flex: 1,
                 id: 'introtext',
                 html: '<p>Please select from your dashboards above</p>'
            },
            {
                 xtype : 'selectfield',
                 store : companiesStore2,
                 name : 'companies',
                 queryMode: 'local',
                 id : 'companiesSelect',
                    itemId: 'companySelect',
                    valueField : 'companyname',
                    displayField : 'companyname',
                    style: 'overflow:hidden',
                    listeners: {
                        change: function(field,value) {
                            getStats(value)
                        }
                    }   
              },

              {
                    xtype: 'toolbar',
                    docked: 'bottom',
                    id: 'bumtoolbar',
                    items: []
                },
                {
                layout: {
                    pack: 'end'
                },
                xtype: 'titlebar',
                id: 'titlebartop',
                title: 'axisfirst Dashboards',

                docked: 'top',
                items: [
                    {
                        xtype: 'button',
                        text: 'Log Off',
                        itemId: 'logOffButton2',
                        id: 'logOffButton2',
                        align: 'right',
                        cls: 'logoffBtn',
                        scope: this,
                        listeners: {                                
                            tap: function() {
                                Ext.Msg.confirm("Log out", "Are you sure you want to logout?", function(btn) {
                                if (btn === 'yes') {
                                    logout();
                                    //Ext.Viewport.setActiveItem({ xtype: loginview });

                                  } else {
                                    return false;
                                  }
                                }, this);

                            }                           
                        }
                    }
                ]
            }]
    }


});

グラフは、別の .js ファイルを使用して追加されます。コードは次のようになります。

var chartgx = {
                                    cls: 'thegauge',
                                    itemId: 'gauge'+tt2,
                                    xtype: 'chart',
                                    shadow: true,
                                    store: gaugeStore,
                                    width : 'auto',
                                    animate: true,
                                    insetPadding: 50,
                                    axes: [{
                                        type: 'gauge',
                                        position: 'gauge',
                                        minimum: 0,
                                        maximum: gaugemax,
                                        steps: 10,
                                        margin: 10,
                                        direction: 'right'
                                    }],
                                    series: [{
                                        showInLegend: false,
                                        type: 'gauge',
                                        position: 'gauge',
                                        minimum: 0,
                                        maximum: gaugemax,
                                        steps: 10,
                                        margin: 10,
                                        angleField: 'CurrentValue',
                                        donut: 30,
                                        colorSet:[gaugeColor,'#e1e1e1']

                                    }]

                                };


                                var gaugeText = '<p class="gaugetitle">' + gaugeTitle + ': ' + currentValue + '</p>';
                                var chartgx2 = Ext.Container({
                                        xtype : 'container',
                                        flex: 1,
                                        layout: 'fit',
                                        cls: 'gaugeContainer',
                                        needle: true,
                                        items: chartgx, 
                                        html: gaugeText
                                   });
                                  if (gaugeTitle !== '') {
                                      allcharts.push(chartgx2);
                                  }

私は AbstractChart.js を見てきましたが、確かに、関数を呼び出しています。ディレクトリ全体 (inc /app および /src) を検索しましたが、関数が見つかりません。

「Ext.chart.AbstractChart」が必要とし、拡張するすべてのファイルを更新しましたが、それでもエラーが発生します。

docs.sencha.com から更新できるように、関数が属するクラスを教えてください。または、このエラーを修正する方法を教えてください。

4

1 に答える 1

0

あなたの質問について、あなたの「シリーズ」はAbstractChartで定義されています。あなたのチャートはAbstractChartを拡張しているので、必要なものを追加する必要はありません(AbstractChart)。メソッド getSeries は sencha-touch コアによって生成されます。Ext.base を拡張するオブジェクトのすべてのフィールドには、get[MyField] と set[MyField] があります。

この関数でエラーが発生しています。ShowInLegend を取得しようとしたとき。しかし、Series の各項目には getShowInLegend メソッドがあり、オンラインでここを見れば確認できますshowInLegend: true,

最初の行で述べたように、Ext.base を拡張するすべてのオブジェクトには get[MyField] メソッドがあり、Ext-chart-series-Seriesは Ext.base に拡張されます。

この情報では、問題はおそらくグラフの作成に関する誤解です。しかし、chartgx がどのように作成されたかについての十分な情報がありません。Ext.create を使用したことがありますか?

于 2014-03-27T18:12:07.347 に答える