Как скрыть Это намеренно? предупреждение в Ext JS 6?

В настоящее время я разрабатываю приложение Ext JS 6 с некоторыми уровнями наследования компонентов, где некоторые сопоставления псевдонимов переопределяются. Отладка Ext JS настолько удобна, что дает мне знать каждый раз, когда я это делаю.

[W] Overriding existing mapping: 'controller.my-controller' From 'MyBase.app.Controller' to 'MySub.app.Controller'. Is this intentional?

В моем случае намеренно. Предупреждения накапливаются, и становится трудно увидеть лес за деревьями.

  • Могу ли я как-то отключить эти операторы только для тех классов, которые являются преднамеренными?
  • Является ли переименование всех моих псевдонимов лучшим решением?

person levivanzele    schedule 16.07.2015    source источник
comment
Если вы переопределяете псевдоним базового контроллера, вам просто не нужен псевдоним в нем, верно?   -  person Elias Medeiros    schedule 16.07.2015
comment
Кажется, мне это нужно, поскольку иначе контроллер представления не может быть найден в представлении, если он также не переопределен. Кроме того, я бы все равно хотел отключить сообщения! :)   -  person levivanzele    schedule 17.07.2015
comment
Я хотел бы знать, как его отключить, поэтому я проголосую за ваш вопрос. Но я имел в виду следующее: ваше представление будет использовать вспомогательный контроллер, верно? Поскольку вы будете ссылаться на него по псевдониму, а псевдоним вашего базового контроллера был переопределен, вы больше не сможете ссылаться на него (базовый контроллер) по псевдониму. Поскольку указанный псевдоним теперь бесполезен, вы можете удалить его из базового контроллера или просто изменить. Извините, если я не ясно выразился :)   -  person Elias Medeiros    schedule 17.07.2015
comment
Ах, да, я неправильно понял ваш вопрос. Это совершенно верно, тогда базовый псевдоним бесполезен.   -  person levivanzele    schedule 18.07.2015


Ответы (2)


Я бы рекомендовал переименовать ваши псевдонимы.

Наличие двух классов с одним и тем же псевдонимом может привести к проблемам при попытке создать экземпляр одного из них. Уже есть отличный ответ на этот вопрос для ExtJS 5. с более подробным объяснением. Основные концепции одинаковы для ExtJs 6.

Поскольку псевдоним всегда должен быть уникальным (в своем пространстве имен), возможно, стоит сохранить предупреждения на случай, если вы что-то пропустите... ;-)

Если вы действительно хотите подавить эти предупреждения, вы можете переписать функцию Ext.log.warn пустой. Как вы можете видеть в ext/packages/core/src/class/Inventory.js, похоже, другого пути нет.

Надеюсь, это ответит на ваши вопросы!

person markusschmitz    schedule 27.09.2015
comment
Это частично отвечает на вопрос. Если через неделю никто не опубликует способ скрыть сообщения, я отмечу это как ответ, предполагая, что невозможно (в пределах разумного) скрыть предупреждения. - person levivanzele; 28.09.2015
comment
Если вы действительно хотите подавить эти предупреждения, вы можете перезаписать функцию Ext.log.warn пустой. В производственном коде это предупреждение все равно не появится. Как вы можете видеть в ext/packages/core/src/class/Inventory.js, другого пути нет. - person markusschmitz; 28.09.2015
comment
Я склонен избегать переопределений, но, думаю, придется. Спасибо за дополнительную информацию, было бы неплохо, если бы вы также указали ее в ответе. - person levivanzele; 29.09.2015

Вы можете легко обойти это предупреждение, установив для параметра «обновление» значение true, когда addAlias вызывает addMapping.

Ext.Inventory.prototype.addAlias = function(className,alias, update) {
    return this.addMapping(className, alias, this.aliasToName, this.nameToAliases, true);
};

https://fiddle.sencha.com/#fiddle/1dec

person Alexander    schedule 11.07.2016