Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExtJS MVC:是否应该在应用程序的requires中指定控制器?_Javascript_Extjs_Extjs4.1_Extjs Mvc - Fatal编程技术网

Javascript ExtJS MVC:是否应该在应用程序的requires中指定控制器?

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.application具有以下控制器:

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));
        };
    }
},