在 extjs4 mvc 框架中扩展图表类会导致“配置未定义”

发布于 2024-11-10 07:18:08 字数 1173 浏览 0 评论 0原文

我想扩展图表类以在视图中使用,作为 extjs4 MVC 框架的一部分。我在 firebug 中收到此错误:

config is undefined 
[Break On This Error] me.initTheme(config.theme || me.theme);
Chart....8936564 (line 191)

这是类定义:

Ext.define('CDR.chart.Daily', {
alias: 'widget.dailychart',
extend: 'Ext.chart.Chart',    
initComponent: function() {
    Ext.apply(this, {
        id: 'daily',
        insetPadding: 30,

     ... irrelevant code cut .......

    });          
    this.callParent(arguments);
  }
});

这是图表添加到的视图类:

Ext.define('CDR.view.trunk.View', {
alias: 'widget.trunkview',
extend: 'Ext.panel.Panel',    
requires: [
    'CDR.chart.Daily'
],        
initComponent: function() {
    Ext.apply(this, {
        id        : 'itemCt',
        border    : false,
        autoScroll: true,
        layout: {
            type : 'hbox',
        },            
        items: [
            Ext.create('CDR.chart.Daily'),
            {
                id    : 'contentCt',
                width : 500,
                border: false
            }
        ]
    });                
    this.callParent(arguments);
  }    
});

I want to extend the chart class to use in a view as part of the extjs4 MVC framework. I get this error in firebug:

config is undefined 
[Break On This Error] me.initTheme(config.theme || me.theme);
Chart....8936564 (line 191)

This is the class definition:

Ext.define('CDR.chart.Daily', {
alias: 'widget.dailychart',
extend: 'Ext.chart.Chart',    
initComponent: function() {
    Ext.apply(this, {
        id: 'daily',
        insetPadding: 30,

     ... irrelevant code cut .......

    });          
    this.callParent(arguments);
  }
});

This is the view class the chart is added to:

Ext.define('CDR.view.trunk.View', {
alias: 'widget.trunkview',
extend: 'Ext.panel.Panel',    
requires: [
    'CDR.chart.Daily'
],        
initComponent: function() {
    Ext.apply(this, {
        id        : 'itemCt',
        border    : false,
        autoScroll: true,
        layout: {
            type : 'hbox',
        },            
        items: [
            Ext.create('CDR.chart.Daily'),
            {
                id    : 'contentCt',
                width : 500,
                border: false
            }
        ]
    });                
    this.callParent(arguments);
  }    
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

脸赞 2024-11-17 07:18:08

我认为这是一个错误,因为默认情况下“主题”应该具有“基本”值,但没有。
来自 Chart.js 的源代码:

/**
 * @cfg {String} theme (optional) The name of the theme to be used. A theme defines the colors and
 * other visual displays of tick marks on axis, text, title text, line colors, marker colors and styles, etc.
 * Possible theme values are 'Base', 'Green', 'Sky', 'Red', 'Purple', 'Blue', 'Yellow' and also six category themes
 * 'Category1' to 'Category6'. Default value is 'Base'.
 */

因此,只需将以下代码添加到您的新类中:

constructor: function() {
    this.callParent([{theme: 'Category1'}]);
},

它对我有用。

I think it's a bug, because 'theme' should be with a 'Base' value by default, but hasn't.
From source code of Chart.js :

/**
 * @cfg {String} theme (optional) The name of the theme to be used. A theme defines the colors and
 * other visual displays of tick marks on axis, text, title text, line colors, marker colors and styles, etc.
 * Possible theme values are 'Base', 'Green', 'Sky', 'Red', 'Purple', 'Blue', 'Yellow' and also six category themes
 * 'Category1' to 'Category6'. Default value is 'Base'.
 */

So, just add following code into your new class:

constructor: function() {
    this.callParent([{theme: 'Category1'}]);
},

It's works for me.

ペ泪落弦音 2024-11-17 07:18:08

我也有类似的问题,但不是针对配置对象,而是针对基本主题,对于您的问题,首先您可以更正面板的 items 属性,而不是

 items: [
        Ext.create('CDR.chart.Daily'),

它应该是

items:[
{ Ext.create('CDR.chart.Daily'),....}

另外,如果您使用的是 MVC 框架,请确保在 app.js 中的 Ext.require 部分中添加了以下行:

'Ext.chart.theme.Base',
'Ext.chart.theme.Theme',

I also had similar problem but not for the config object but for the Base Theme , for your issue first you can correct the items property of your panel instead of

 items: [
        Ext.create('CDR.chart.Daily'),

it should be

items: [
{ Ext.create('CDR.chart.Daily'),....}

Also if you are using the MVC framework then make sure in your app.js you have added the below lines in the Ext.require section :

'Ext.chart.theme.Base',
'Ext.chart.theme.Theme',
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文