1

使用 ExtJS v4.1 MVC,我有一个包含以下代码的应用程序类:

Ext.application({
name: 'SHOP',
appFolder: 'shop',
     ...

我的主视口有以下代码和项目:

requires: ['SHOP.view.CategoryKey'],
requires: ['SHOP.view.ProductLister'],
     ...

            layout: {
            type: 'border',
            padding: 3
        },
        items: [{
            region: 'west',
            title: 'TEST1',
            xtype: 'CategoryKey'
        },{
            region: 'center',
            title: 'TEST2',
            border: false
        }]

请注意,我的视口没有使用 ProductLister 对象(但请耐心等待)。

为了完整起见,下面是 ProductLister 的代码。请注意,这只是一些旨在将视图放入我的应用程序的基本内容。

Ext.define('SHOP.view.ProductLister', {
extend: 'Ext.view.View',
alias: 'widget.productimages',
title: 'List Test'
});

我看到了两件非常奇怪的事情。首先,当我按上面显示的顺序放置 requires 语句时,当我尝试显示页面时出现以下故障(使用调试运行):

类型错误:名称未定义

但是如果我更改 requires 语句的顺序,使其如下所示:

    requires: ['SHOP.view.ProductLister'],
requires: ['SHOP.view.CategoryKey'],

错误消失了!

我看到的第二件奇怪的事情是,当我实际更改项目列表以便中心有我的 ProductLister 时:

            layout: {
            type: 'border',
            padding: 3
        },
        items: [{
            region: 'west',
            title: 'TEST1',
            xtype: 'CategoryKey'
        },{
            region: 'center',
            xtype: 'productimages'
        }]

我遇到了同样的失败:

类型错误:名称未定义

我还监视了文件的加载,并注意到在所有情况下 ProductLister.js 文件都不会加载!

其他一些事实:

  1. MVC 应用程序具有标准的目录集,只有根是“shop”(因此应用程序中的 appFolder 属性)。CategoryKey 和 ProductLister 类都在视图子文件夹中。

  2. 我确实有一个列出两个视图类的控制器(我最终想在控制器中将它们之间的事件处理放在一起):

    config: {
    stores: ['Categories'],
    views: ['CategoryKey','ProductLister']
    },
    

理论上,在 requires 语句和控制器中的配置之间,我的两个视图都应该被加载。但由于某种原因,ExtJS 加载器似乎正在加载 CategoryKey.js 文件而不是 ProductLister.js 文件。

此外,我会假设 requires 语句的顺序无关紧要,但是当我不使用 ProductLister 对象时,它显然会起作用。

我要么在 MVC 机制中发现了一个奇怪的错误,要么我错过了一些东西。我希望我错过了什么。

有谁知道这里发生了什么?更重要的是,我该怎么做才能使这段代码工作???我是否在某处遗漏了声明?如果有,在哪里?

有人请指教...

4

1 回答 1

2

最奇怪的是你声明了requires两次属性,覆盖了第一次:

var o = { a:[1], a:[2] };
o.a.join(' ') === '1 2' // false
o.a.join(' ') === '2' // true

试试这个:

requires: ['SHOP.view.ProductLister', 'SHOP.view.CategoryKey']
于 2013-02-05T15:01:56.430 回答