2010-08-11 1 views
0

Lorsque je crée deux objets de fenêtre contenant un seul objet de champ de texte dans chaque fenêtre. Mais l'identifiant de ce champ de texte est le même. Lorsque je redimensionne, agrandit ou minimise un objet fenêtre, les contrôles se déplacent d'une fenêtre à l'autre. S'il vous plaît jeter un oeil sur le code suivant et re-taille première fenêtre intitulée: 'la fenêtre 1'EXTJS: deux fenêtres ayant des objets ayant le même identifiant

Ext.onReady (function() {

var win = new Ext.Window({ 
    title : 'window 1', 
    width:200, 
    height:200, 
    maximizable : true, 
    x : 50, 
    items: [{xtype : 'textfield', id: 'text1'}] 
}); 

win.show(this); 

var win2 = new Ext.Window({ 
    title : 'window 2', 
    width:200, 
    height:200, 
    maximizable : true, 

    x : 350, 
    items: [{xtype : 'textfield', id: 'text1'}] 

}); 

win2.show(this); 

});

Répondre

3

Comme pour HTML, chaque id doit être unique. Sinon, vous aura avoir un comportement étranges.

En effet, la méthode Ext.get a un cache, basé sur l'élément id.

Donc, la vraie question est: pourquoi définissez-vous le même id dans les champs de texte?

Si vous avez besoin d'un identifiant connu, vous pouvez utiliser:

tId = Ext.id(); // generates an id 
items: [{xtype : 'textfield', id: tId}] 

ou pour accéder à l'élément textfield/composant plus tard, vous pouvez utiliser ref ou itemId: http://dev.sencha.com/deploy/dev/docs/?class=Ext.Component