In the application below, I am trying to add id
's to the generated items dynamically. My code works fine but when I add the below two commented lines in it. It throws error
Uncaught Ext.AbstractManager.register(): Registering duplicate id "73" with this manager
When I tried to find out the source of error, I found that the code is working fine till the execution of 81
id's (console.log(_idGen)
). From this, it is clear that the error is related to out of range exception. (9*9 = 81) and also only in Fiddle, when I add HTML text to the child panels, I came to know that they are between 73 to 81
??(instead of 1 to 81
) which is confusing me, how?
Ext.onReady(function(){
var _idGen = 1;
var childItems = [], items = [];
for (var i = 0; i < 9; i++) {
childItems.length = 0;
for (var j = 0; j < 9; j++) {
childItems.push({
xtype: 'panel',
/****************************/
id: _idGen,
html: _idGen + "",
/****************************/
width: 50,
height: 50,
style: {borderWidth: '1px'}
});
console.log(_idGen);
/*****************************/
_idGen++;
/*****************************/
}
items.push({
xtype: 'panel',
layout: {
type: 'table',
columns: 3
},
items: childItems
});
}
Ext.create('Ext.container.Container', {
layout: {
type: 'table',
// The total column count must be specified here
columns: 3
},
renderTo: Ext.getBody(),
style: {width: '455px',marginLeft: 'auto',marginRight: 'auto', marginTop: '30px'},
items: items
});
});
Don't create Id's by your won if not strictly required!
It will always be a source of errors so why bother yourself with that when the framework already take care.
Use custom identifier properties or better, the one that is already supported by the framework
itemId
. This property need only to be unique within each component level. You can also use thegetComponent('your-item-id')
method to receive a component that is nested into the calling one.I've modified your example to use
itemId's
and provided you demo query at the bottomSee JSFiddle