Javascript ExtJS MVC:是否应该在应用程序的requires中指定控制器?
如果Ext.application具有以下控制器:Javascript ExtJS MVC:是否应该在应用程序的requires中指定控制器?,javascript,extjs,extjs4.1,extjs-mvc,Javascript,Extjs,Extjs4.1,Extjs Mvc,如果Ext.application具有以下控制器: Ext.Loader.setConfig({enabled:true}); Ext.application({ name: 'MyApp', appFolder: 'app', controllers: [ 'Ctrl1', 'Ctrl2' ], launch: function() { ... } }); 是否还应包括控制器中的需要部分中的控制器,
Ext.Loader.setConfig({enabled:true});
Ext.application({
name: 'MyApp',
appFolder: 'app',
controllers: [
'Ctrl1',
'Ctrl2'
],
launch: function() { ... }
});
是否还应包括控制器
中的需要
部分中的控制器,即添加
requires: [
'MyApp.controller.Ctrl1',
'MyApp.controller.Ctrl2'
],
在上述类别中?不,这是不必要的。下面是我正在使用的
app.js
工作示例:
Ext.Loader.setConfig({enabled:true});
Ext.Loader.setPath('Ext.ux', '../extjs/examples/ux');
Ext.application({
name: 'FPPP',
autoCreateViewport: true,
controllers: [
'Main',
'List',
'Report'
]
});
还有简短的答案是否定的 答案很长,
控制器
,模型
,视图
和存储
配置所有转换为所需的
。发挥魔力的部分在课堂上:
您的应用程序只是一个继承自
Ext.app.Controller
的Ext.app.application
类;因此,controllers
config也被转换为requires
是Ext.Loader.setPath
语句,例如,对于您的FFFP
位置也是必需的,通常位于相对目录app
?@JosvicZammit中,我有一个extjs框架库供多个应用程序使用,因此我需要为我的应用程序提供一个框架的相对路径,以获取所有ux类。只要将名称空间与目录结构匹配,就不需要这样做。
onClassExtended: function(cls, data, hooks) {
var Controller = Ext.app.Controller,
className, namespace, onBeforeClassCreated, requires, proto, match;
className = Ext.getClassName(cls);
namespace = Ext.Loader.getPrefix(className) ||
((match = className.match(/^(.*)\.controller\./)) && match[1]);
if (namespace && namespace !== className) {
onBeforeClassCreated = hooks.onBeforeCreated;
requires = [];
hooks.onBeforeCreated = function(cls, data) {
proto = cls.prototype;
Controller.processDependencies(proto, requires, namespace, 'model', data.models);
Controller.processDependencies(proto, requires, namespace, 'view', data.views);
Controller.processDependencies(proto, requires, namespace, 'store', data.stores);
Controller.processDependencies(proto, requires, namespace, 'controller', data.controllers);
// this is the line to look at!!!
Ext.require(requires, Ext.Function.pass(onBeforeClassCreated, arguments, this));
};
}
},