使用 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 文件都不会加载!
其他一些事实:
MVC 应用程序具有标准的目录集,只有根是“shop”(因此应用程序中的 appFolder 属性)。CategoryKey 和 ProductLister 类都在视图子文件夹中。
我确实有一个列出两个视图类的控制器(我最终想在控制器中将它们之间的事件处理放在一起):
config: { stores: ['Categories'], views: ['CategoryKey','ProductLister'] },
理论上,在 requires 语句和控制器中的配置之间,我的两个视图都应该被加载。但由于某种原因,ExtJS 加载器似乎正在加载 CategoryKey.js 文件而不是 ProductLister.js 文件。
此外,我会假设 requires 语句的顺序无关紧要,但是当我不使用 ProductLister 对象时,它显然会起作用。
我要么在 MVC 机制中发现了一个奇怪的错误,要么我错过了一些东西。我希望我错过了什么。
有谁知道这里发生了什么?更重要的是,我该怎么做才能使这段代码工作???我是否在某处遗漏了声明?如果有,在哪里?
有人请指教...