1

具体示例是具有一系列选项卡的“首选项”窗口,每个选项卡都包含一系列表单字段。这些选项卡或表单字段都不会在窗口之外重复使用,并且窗口本身只会有一个实例。使用单个项目配置意味着它有数百行长,难以维护。

My.Ns.PreferencesWindow = Ext.extend(Ext.Window, {

    items: [
        // A tab
        {
            items: [
                // Form fields
                {},
                {},
                {},
            ]
        },
        // A tab
        {
            items: [
                // Form fields
                {},
                {},
                {},
            ]
        },
        ...
    ]
});
  • 我不是在问如何组织一个大型 ExtJS 应用程序。我已经阅读了组织 ExtJS 项目的最佳方式Saki 关于该主题的博客文章
  • 对每个项目进行 Ext.extend 并没有真正意义,因为它们不会被多次实例化。
  • 将各种组件封装在仅返回项目 json 的“生成器”函数中,乍一看似乎是一种合理的方法。
4

1 回答 1

2

只需使用变量使其更具可读性:

var tabOneCfg = {
    items: [
        // etc.
    ]
};

var tabTwoCfg = {
    items: [
        // etc.
    ]
};

My.Ns.PreferencesWindow = Ext.extend(Ext.Window, {
    items: [
        tabOneCfg,
        tabTwoCfg
    ]
});

您可以根据需要对其进行细化,甚至可以将子配置包含在单独的文件中(尽管这种类型的方案在 Ext 4 下不能很好地使用动态加载)。根据配置的性质,生成器或工厂函数也可能有意义。原则上,这两种方式都是一样的——只需将子配置分成更小的块并根据需要使用它们。

于 2011-07-11T15:23:45.367 回答