如何在 Ext JS 6 中隐藏 "Is this intentional?" 警告?

How to hide "Is this intentional?" warning in 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?

就我而言,这是故意的。警告层出不穷,只见树木不见森林开始变得越来越困难。

我建议重命名您的别名。

有两个具有相同别名的 类 可能会在尝试实例化其中之一时导致问题。已经有一个 great answer to this question for ExtJS 5 有更详细的解释。 ExtJs 6 的核心概念相同。

因为 别名应该始终是唯一的(在它的命名空间中),保留警告可能是个好主意,以防万一您错过了什么……;- )

如果您真的想抑制这些警告,您可以用一个空的 覆盖 Ext.log.warn 函数。正如您在 ext/packages/core/src/class/Inventory.js 中看到的那样,似乎没有其他解决方法。

希望这能回答您的问题!

您可以通过在 addAlias 调用 addMapping.

时强制将 "update" 参数设置为 true 来轻松覆盖警告
Ext.Inventory.prototype.addAlias = function(className,alias, update) {
    return this.addMapping(className, alias, this.aliasToName, this.nameToAliases, true);
};

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