1

这是使用标准的 ExtJS 4 MVC 库和结构。

我正在尝试将多个视图附加到单个控制器,以便稍后创建它们的实例以添加到面板。不幸的是,当我添加第二个视图时,我收到了关于视图的错误,而 ExtJS 阻止了它出现的语法错误,因此我无法看到问题出在哪里。

如果我从下面的列表中注释掉 ViewOrders,它可以正常工作,但如果它在那里,那么我会收到以下错误:

An uncaught error was raised with the following data: ext-all-debug-with-comments.js (line 7864)
msg:
"The following classes are not declared even if their files have been loaded:   'PVAL_App.view.ViewOrders'. Please check the source code of their corresponding files for possible typos: 'app/view/ViewOrders.js'"

sourceClass: "Ext.Loader"
sourceMethod: "onFileLoaded"

这是我的控制器:

Ext.define('PVAL_App.controller.Viewport', {
    extend: 'Ext.app.Controller',

    views: [
      'Viewport', 'ViewOrders'
    ],

    init: function() {
      console.log('Viewport controller init()');
    }
});

这是我的 ViewOrders 视图:

Ext.define('PVAL_APP.view.ViewOrder', {

    /* Begin Definitions */
    extend: 'Ext.panel.Panel',
    alias: 'widget.ViewOrders',

    requires: [
        'Ext.panel.Panel',
        'Ext.data.ArrayStore'
    ],

    border:false,
    layout: 'fit',
    //autoScroll: true,

    initComponent: function() {
    }
});

我怀疑这是必需的,但这是我的应用程序文件:

Ext.Loader.setConfig(
{
  enabled: true
});
Ext.application({
  name: 'PVAL_App',

  appFolder: 'app',

  autoCreateViewport: true,

  controllers: [
    'PVAL_App', 'Viewport'
  ],

  launch:function() {
    // Nothing yet.
    //console.log(this.controllers);
  }
});

我似乎无法弄清楚这是语法错误还是框架有问题。如果我尝试从一个控制器内部链接到另一个控制器,我会遇到接近相同的问题,这让我相信这可能是框架的约束。

4

1 回答 1

5

这里的问题是你的 app/view/ViewOrders.js 脚本中的类名与视图名不匹配。而不是Ext.define('PVAL_APP.view.ViewOrder', {你需要复数(和正确的大小写)Ext.define('PVAL_App.view.ViewOrders', {。要么我们您可以更改您的文件名并引用单数并更正大小写。

于 2011-05-27T13:56:24.110 回答