1

我之前不小心删除了这个帖子,所以我重新提交:\

我通常是 Ext JS 和 MVC 的新手,并且正在玩弄创建一个应用程序,该应用程序具有嵌套在面板内的图表,该面板嵌套在应用程序内的边框面板内。[从上到下依次为视口 > 边框面板 > '中心区域' 中的面板 > 图表]

我在边框面板中嵌套面板的原因是嵌套面板将同时保存图表以及图表的工具栏,这两者都是动态的,具体取决于用户的选择。

虽然简单地让边框面板引用外部定义的图表视图效果很好,但一旦我尝试让它引用外部定义的面板视图,它就会抛出“未捕获的类型错误:无法调用未定义的方法‘子字符串’”,并且 Aptana 给了我一个“名称是undefined' 命名空间错误,无论我是否让嵌套面板引用图表或只是留空。我已经仔细检查了我的名字间距,所以我有点迷失从哪里开始寻找问题。

我的基本应用程序文件如下:

Ext.application({
    name: 'Chart',

    appFolder: 'chart',

    controllers:['sidebar.Navigation', 'commoditycontrol.Commoditycontrol',    
    'chart.oil.Spreads'],

    launch: function() {
        Ext.create('Ext.container.Viewport', {
            layout: 'border',
            items: [{
                region: 'north',
                xtype: 'commoditycontrol',
            }, {
                region: 'east',
                xtype: 'sidebarnavigation',
            }, {
                region: 'center',
                xtype: 'oilbase',
            }]
        });
    },

});

“oilbase”视图只是一个导入图表和图表工具栏视图的面板(在这种情况下,我已将工具栏视图排除在外)

Ext.define('Chart.view.base.Oil', {
   extend: 'Ext.panel.Panel',
   alias: 'widget.oilbase',

   name: 'oilbase',
   layout: 'fit',

   items: [{
       xtype: 'oilspreads'
   }]

});

这是图表视图“油价”

Ext.define('Chart.view.chart.oil.Spreads', {
   extend: 'Ext.chart.Chart',
   alias: 'widget.oilspreads',

   name: 'oilspreads',
   layout: 'fit',
   store: 'Chart.store.oil.Spreads',
   config: {
   style: {
            background: '#333333'
          },
    },

    axes: [
        {
            title: 'Close',
            type: 'Numeric',
            position: 'left',
            fields: ['close'],
            minimum: 0,
            maximum: 100,
            cls: 'axis'
        },
        {
            title: 'Month',
            type: 'Category',
            position: 'bottom',
            fields: ['month'],
            cls: 'axis'
        }
    ],

    series: [
        {
            type: 'line',
            xField: 'month',
            yField: 'close'
        }
    ]
});

同样,如果我在应用程序中引用图表视图而不是“oilbase”空面板,一切正常。如果我引用默认面板 xtype,一切正常。

是否不鼓励嵌套面板?我的直觉是,我只是遗漏了一个明显的命名空间问题,但我希望看到第二组眼睛,以及对我对 ExtJs 的 MVC 模式的一般方法的评论。

谢谢

4

1 回答 1

0

为了正确加载视图,必须在应用程序的视图配置中或其中一个控制器的视图配置中进行定义。

于 2012-07-04T02:02:54.370 回答