EXTJS - Comment faire pour vérifier si un élément existe?
J'ai besoin de savoir si un boxComponent existe dans un poste formPanel afin de prendre certaines mesures... Est-il un moyen de le savoir?
quelque chose comme ceci:
Le modèle commun que la plupart des gens utilisent est ceci:
var myBoxCmp =Ext.getCmp('cmpId');if(myBoxCmp){
myBoxCmp.doSomething();}
Même chose pour les Éléments:
var el =Ext.get('elId');if(el){
el.doSomething();}
Vous pouvez également utiliser des méthodes comme Container.findById, mais si vous avez une id (en supposant qu'il est unique, ce qui doit l'être) juste utiliser getCmp.
EDIT: Plusieurs années ont passé depuis cette réponse originale à cette question, et de nos jours getCmp est généralement mal vu comme un odeur de code et doit généralement être évitée dans les applications (qui promeut de références globales, qui sont généralement le signe d'une mauvaise conception lorsqu'ils sont requis). Il est généralement préférable d'utiliser le contrôleur de références (si utilisation de MVC) ou les différents ComponentQuery ou Conteneur des méthodes de référence des composants connexes (p. ex. en bas, enfant, getComponent, etc.)
j'ai défini un panneau avec l'id. maintenant, quand je l'ajouter à une frontière de disposition de la région de centre, comment dois-je vérifier qu'il n'existe dans la région de centre ou pas? parce qu'elle est ainsi définie..
Je viens de faire la extjs, et je préfère ne pas utiliser getElementById (), qui est un natif de méthode js et peut causer des problèmes d'incompatibilité dans diffrenet navigateurs:
if(!Ext.getCmp('componentid')){
alert('boxId is empty');}
Vous pouvez utiliser Ext.get('boxId'). Il retourne null si l'objet n'existe pas et renvoie un Ext.Element objet.
À l'aide de getElementById serait probablement beaucoup plus rapide. Avez-vous des objections contre elle?
Ext.obtenez est un incrustée de recherche dans une table de hachage, il est fondamentalement juste comme rapidement comme getElementById (et a l'avantage de renvoyer un Poste.Élément au lieu d'un nœud DOM, en supposant que c'est le but ultime). C'est seulement un avantage, la prochaine fois que vous exécuter. Le premier temps sera toujours lent. Puis à nouveau, si la vitesse est votre objectif que vous n'auriez probablement pas être à l'aide de Ext JS 🙂 Vrai. En pratique, cependant, si vous utilisez Ext pour commencer, il n'y a pas beaucoup de raisons d'aller à l'extérieur de son Élément d'abstraction. Et par "plus rapide" vous êtes encore ne parlons que d'un millième de seconde ou deux de ces jours. Tout d'abord merci à tous. Le problème a été résolu. J'ai essayé tous les moyens de le faire. Bon à savoir la diference entre la façon de trouver les éléments et les différentes méthodes pour le faire. Thx
Le modèle commun que la plupart des gens utilisent est ceci:
Même chose pour les Éléments:
Vous pouvez également utiliser des méthodes comme
Container.findById
, mais si vous avez une id (en supposant qu'il est unique, ce qui doit l'être) juste utilisergetCmp
.EDIT: Plusieurs années ont passé depuis cette réponse originale à cette question, et de nos jours
getCmp
est généralement mal vu comme un odeur de code et doit généralement être évitée dans les applications (qui promeut de références globales, qui sont généralement le signe d'une mauvaise conception lorsqu'ils sont requis). Il est généralement préférable d'utiliser le contrôleur de références (si utilisation de MVC) ou les différents ComponentQuery ou Conteneur des méthodes de référence des composants connexes (p. ex. en bas, enfant, getComponent, etc.)OriginalL'auteur Brian Moeskau
Je viens de faire la extjs, et je préfère ne pas utiliser getElementById (), qui est un natif de méthode js et peut causer des problèmes d'incompatibilité dans diffrenet navigateurs:
OriginalL'auteur Mehdi Fanai
Vous pouvez utiliser
Ext.get('boxId')
. Il retournenull
si l'objet n'existe pas et renvoie unExt.Element
objet.À l'aide de
getElementById
serait probablement beaucoup plus rapide. Avez-vous des objections contre elle?C'est seulement un avantage, la prochaine fois que vous exécuter. Le premier temps sera toujours lent. Puis à nouveau, si la vitesse est votre objectif que vous n'auriez probablement pas être à l'aide de Ext JS 🙂
Vrai. En pratique, cependant, si vous utilisez Ext pour commencer, il n'y a pas beaucoup de raisons d'aller à l'extérieur de son Élément d'abstraction. Et par "plus rapide" vous êtes encore ne parlons que d'un millième de seconde ou deux de ces jours.
Tout d'abord merci à tous. Le problème a été résolu. J'ai essayé tous les moyens de le faire. Bon à savoir la diference entre la façon de trouver les éléments et les différentes méthodes pour le faire. Thx
OriginalL'auteur Wolph
Utiliser la Poste.isEmpty(objet) de la méthode.
OriginalL'auteur It Grunt
Cette fonction ouvre une vue comme
et si la Vue existe, il accède à l'ancienne instance
OriginalL'auteur Pablo