【问题标题】:extjs Ext.app.Application for custom packageextjs Ext.app.Application 用于自定义包
【发布时间】:2020-03-04 22:01:46
【问题描述】:

我正在尝试创建一个包,但它有一堆必需的文件和全局存储,需要在应用程序启动时获取。我的包曾经是一个更大的应用程序的一部分,所以我将它们添加到requires: []stores: []

既然我有一个单独的包,我们如何实现这一点? (我不再有 Application.js 文件)

更新

我添加了一个 Require.js 文件,其中包含我的包的所有要求。现在我只能模拟Application.stores 来创建全球商店。

【问题讨论】:

    标签: extjs extjs6-classic


    【解决方案1】:

    只需将依赖项直接添加到它们所依赖的类中(在帮助下 requires)。如果必须手动初始化此商店

    更新答案:

    尝试覆盖Require类的构造函数

    
    Ext.define('Require', {
        stores:[],
        constructor: function (config) {
            this.callParent(arguments);
            Ext.Array.each(this.stores, function (storeName) {
                Ext.require(storeName, function () {
                    Ext.create('storeName', {});
                })
            })
        }
    })
    

    【讨论】:

    • 我想避免对我的包裹中的所有东西都这样做。对于视图,我可以看到这种情况,但是对于我的包中使用的商店和实用程序类,不需要 require(使用我的包的地方)。
    • 为什么?这些依赖项不是您的包的一部分吗?或者你想要一个地方来连接依赖项?
    • 是的,他们是;但是我的包的用户不应该知道使用我的包中的组件需要什么。组件本身不需要所有依赖项;它们曾经使用 Application.js 解决。但是一旦我开始将(可重用)组件移动到一个包中,我正在寻找一种替代方法来要求这些依赖项(这也是我的包的一部分)而不使用 Application.js;我可以使用一个衬里,但更重要的是,它会使我的包裹不那么可用(并且难以维护)。
    • 在我的包中,我使用上面写的方式。我描述了组件本身的依赖关系。在我看来,您正在尝试在 package.json 上使用应用程序方法。如果你对包类的依赖在你的包之外,我认为这很糟糕。虽然这一切都取决于上下文。如果您创建了一个自定义组合框,假设(treecombo - 组合框使用树存储),那么您不应该在包中指定要连接到它的存储。在使用此组件的类中执行此操作(treecombo)。也许我误解了你的问题。对不起
    • 我的大部分依赖都来自我自己的包。在您的示例中,如果我提供自定义组合框,我希望用户只需要我的自定义组合框(视图),而不知道他们还需要什么商店类型。对我来说,直接的解决方案似乎是在我的自定义组件中添加对商店的需求。我目前没有这个,我想避免这样做;我希望我可以在一个地方要求我的所有商店,然后在同一个地方实例化所有全球商店。据我所知,这就是Application.stores 所提供的。
    猜你喜欢
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 2013-11-18
    • 1970-01-01
    相关资源
    最近更新 更多