簡體   English   中英

ExtJS MVC:是否應在應用程序需求中指定控制器?

[英]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() { ... }
});

它應該還包括控制器在controllersrequires部分,即增加

requires: [
    'MyApp.controller.Ctrl1',
    'MyApp.controller.Ctrl2'
],

在上述課程內?

最簡潔的答案是不。

長答案是controllersmodelsviewsstores配置都可以轉換為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.ControllerExt.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'
    ]

});

還有Sencha MVC指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM