[英]ExtJS MVC: should controllers be specified within requires for application?
如果Ext.application具有以下控制器:
Ext.Loader.setConfig({enabled:true});
Ext.application({
name: 'MyApp',
appFolder: 'app',
controllers: [
'Ctrl1',
'Ctrl2'
],
launch: function() { ... }
});
它應該還包括控制器在controllers
中requires
部分,即增加
requires: [
'MyApp.controller.Ctrl1',
'MyApp.controller.Ctrl2'
],
在上述課程內?
最簡潔的答案是不。
長答案是controllers
, models
, views
和stores
配置都可以轉換為requires
。 神奇之處在於Ext.app.Controller類:
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));
};
}
},
您的應用程序只是繼承自Ext.app.Controller
的Ext.app.Application
類; 因此, controllers
配置也轉換為requires
。
不,那不是必須的。 這是我現在正在使用的工作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'
]
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.