意外的ExtJS错误消息:Ext.ComponentManager.register():注册重复的组件ID“sparklines-tooltip”

时间:2015-01-19 17:20:42

标签: extjs

在加载应用程序期间,有时会发生以下错误。当我重新打开浏览器或在我的应用程序中更改某些内容时,它会消失。

错误:

[E] Ext.ComponentManager.register(): Registering duplicate component id "sparklines-tooltip"
[...]
Error.js?_dc=1421687747906:103 Uncaught Error: Registering duplicate component id "sparklines-tooltip"

Chrome控制台屏幕截图: Chrome Console Screenshot

我没有更改ExtJS来源。我正在使用Sencha ExtJS 5,Sencha Cmd和Visual Studio 2013。

当我在整个解决方案中搜索它时发现:

ext\src\sparkline\Base.js(500):            id: 'sparklines-tooltip',

这是我的Application.js

的application.js

/**
 * The main application class. An instance of this class is created by app.js when it calls
 * Ext.application(). This is the ideal place to handle application launch and initialization
 * details.
 */
Ext.define('ExtTest.Application', {
    extend: 'Ext.app.Application',
    requires: ['*'],
    name: 'ExtTest',

    models: [
        'vPrd'
    ],

    stores: [
    ],

    launch: function () {
        Ext.create('Ext.container.Viewport', {
            layout: 'border',
            autoShow: 'true',
            items: [{
                region: 'center',
                xtype: 'app-main'
            }]
        });
    }
});

导致错误的文件名为Api.js,它定义了" Ext.ux.google.Api"。

更新 根据这里发布的答案,我正在检查我的组件的重复ID。没有。

找到解决方法 在Application.js中我有这一行:

requires: ['*']

它使Sencha Cmd包含ExtJS的所有包(也是" Ext.ux.google.Api"我没有使用它)。当我删除它时,它工作,app.js也更小。 无论如何,这不是一个真正的解决方案。应该可以包含所有内容而不会出错。

2 个答案:

答案 0 :(得分:2)

组件管理器不允许重复的ID,如错误读取。您可能拥有ID为“sparklines-tooltip”的组件,这些组件是在某些事件下动态生成的,这就是问题偶尔发生的原因。我建议查看您的代码并查找该ID,然后在动态创建它时添加一些内容,如变量计数器等。

答案 1 :(得分:0)

我有类似的错误消息。我正在为某些面板定义ID。而且,我正在动态创建视口,同时,autoCreateViewport设置为true。这导致了上面的错误。通过将autoCreateViewport更改为false,错误消失了。

解决方案是,首先对重复的ID执行文本搜索。如果没有,请检查动态创建的面板ID。