ExtJS 5.0 - 协助覆盖

ExtJS 5.0 - assistance with overrides

在现有的ExtJS 5.0项目中,不能更改原始代码。我们 允许将代码添加到现有的 overrides/ 目录。

我想覆盖 class Products.view.ProductsTreeViewController 中的现有函数 generateTree

当前函数在 Useless/app/view/ 下的文件 PTVC.js 中。

这是我用来覆盖的代码:

Ext.define('overrides.Products.view.ProductsTreeViewController', {
    override :'Products.view.ProductsTreeViewController',
    generateTree: function (data) {
        if (this.isValid(data))
            this.callOverridden(data);
        else
           this.callOverridden(this.getDefaultData());
    }
};

First question, where should the code reside under overrides/? I've seen many different configurations suggested, e.g.

所有内容都在一个文件中:

Useless/
    overrides/
        app.js

与原始文件相同的路径:

Useless/
    overrides/
        app/
            view/
                PTVC.js

已覆盖 class 名称:

Useless/
    overrides/
        Products/
            view/
                ProductsTreeViewController/
                    class.js

我已经尝试了上述所有方法和更多方法,并通过各种方式确认代码没有被包含!

So second question, how to make sure it is included?

文档使它看起来很简单,这使它更加令人沮丧。

在我使用的版本中 sencha.cfg 中没有 classpath 变量,在任何情况下我都会更改现有文件,所以可能无法这样做,或者添加requires in Ext.application 出于同样的原因。

So third question, in lieu of modifying existing files, is there a build command line switch I can use to specify an additional build directory?

我绞尽脑汁想弄明白这个问题。任何建议,除了辞掉我的工作,将不胜感激。

  1. 最好复制目录结构,这样就不用担心文件名冲突了,但是可以把文件放在overrides/.

    下的任意位置
  2. 你是 运行 ExtJS 5.0.0 吗?它有一个回归错误,他们忘记在 app.json 中包含 "overrides": "${app.dir}/overrides"。您也可以修改 .sencha 下的配置文件,但最好将其放在 app.json 下。您不需要 requires。这在版本 5.0.1 中已修复。

  3. 可能不会,但是在 app.json 中添加该行是一个非常小的更改,并且是在 5.0.0 中进行覆盖的唯一方法(我怀疑您正在使用) .