2015-08-10 2 views
1

В существующем проекте ExtJS 5.0 изменить исходный код невозможно. Мы : разрешено добавлять код в существующий каталог overrides/.ExtJS 5.0 - помощь с переопределениями

У меня есть существующая функция generateTree в классе Products.view.ProductsTreeViewController, которую я хочу переопределить.

Текущая функция находится в файле PTVC.js под Useless/app/view/.

Это код, я использую, чтобы переопределить:

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

Первый вопрос, где должен находиться код под overrides/? Я видел множество различных конфигураций, например,

Все в одном файле:

Useless/ 
    overrides/ 
     app.js 

тот же путь, как и исходный файл:

Useless/ 
    overrides/ 
     app/ 
      view/ 
       PTVC.js 

Переопределенный Имя класса:

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

Я пробовал все вышеперечисленное и многие другие подходы и подтвердил с помощью различных средств, что код не включительно!

Итак, второй вопрос, как убедиться, что он включен?

В документации создается впечатление, что это так просто, что делает его еще более неприятным.

В версии я использую не classpath переменной в sencha.cfg, в любом случае я бы изменения существующего файла, так что, вероятно, не может сделать это, или добавить requires в Ext.application по той же причине.

Итак, третий вопрос, вместо изменения существующих файлов, есть ли переключатель командной строки сборки, который я могу использовать для указания дополнительного каталога компоновки?

Я тяну свои волосы, пытаясь понять это. Любые советы, не выходящие за мою работу, будут оценены по достоинству.

ответ

1
  1. Лучше дублировать структуру директорий, то вам не придется беспокоиться о столкновениях имени файла, но вы можете поместить эти файлы в любом месте под overrides/.

  2. Вы используете ExtJS 5.0.0? У этого есть ошибка регрессии, в которой они забыли включить "overrides": "${app.dir}/overrides" в app.json. Вы также можете изменить файл конфигурации под .sencha, но лучше иметь его в app.json. Вам не понадобятся requires.Это исправлено в версии 5.0.1.

  3. Возможно, нет, но это очень небольшое изменение, чтобы добавить эту строку в app.json, и единственный способ сделать переопределения работать в 5.0.0 (что, я подозреваю, вы используете).

+0

Да, я использую 5.0.0. Именно в этом и была проблема! –

Смежные вопросы