IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ext JS / Sencha Discussion :

[Méthode] accéder à un component


Sujet :

Ext JS / Sencha

  1. #1
    Invité
    Invité(e)
    Par défaut [Méthode] accéder à un component
    Bonjour,

    imaginons un component Panel, ou peu importe lequel d'ailleurs avec un id: 'mon_id'

    Dans un autre fichier .js, comment y accéder ? Car la méthode getCmp('mon_id') ne marche pas, alors qu'elle marche si elle est utilisée dans le même fichier.

  2. #2
    Membre expérimenté Avatar de JulienFio
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    Par défaut
    Si si ça fonctionne très bien. Si pour toi ça ne fonctionne pas c'est que ton composant ne doit pas exister au moment où tu l'appelle, ou tu as un autre problème genre un mauvais include de ton .js, mais je te confirme que ça fonctionne.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Humm, c'est bizarre, j'ai un fichier js qui instancie un Panel et un autre qui instancie un TreePanel. Mon but est de n'ajouter le TreePanel uniquement si j'inclue le fichier correspondant. J'ai donc mis juste après la définition du TreePanel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ext.getCmp('id_panel').add(monTreePanel);
    Dans ce cas ça ne marche pas, alors que le fichier js contenant la définition du panel est appelé en premier. Si je déplace cette méthode dans ce fichier, tout marche.

  4. #4
    Membre expérimenté Avatar de JulienFio
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    Par défaut
    j'ai un fichier js qui instancie un Panel et un autre qui instancie un TreePanel. Mon but est de n'ajouter le TreePanel uniquement si j'inclue le fichier correspondant
    C'est moi où ce n'est pas clair du tout ?

    Si le rôle de ton .js est d'instancier ton TreePanel, forcement il ne sera instancié que si tu fait l'include du fichier ><

    Bref.. Peux-tu poster le contenu (l'essentiel en tout cas) de tes .js et la façon (et l'ordre) dont tu les inclus ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oui, le but est d'instancier le TreePanel, mais si je suis obligé de l'ajouter au panel dans un autre fichier, je vais avoir une belle erreur si jamais je ne l'inclus pas aussi.

    bref, difficile d'être clair effectivement, voici mes fichiers :

    fichier principal, inclu en premier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    var menu = new Ext.Panel({
        id:'menu-panel',
        region: 'west',
        title: 'Menu',
        border: false,
        collapsible: true,
        margins:'0 0 0 0',
        layout:'accordion',
        width: 200,
        minSize: 175,
        maxSize: 400,
      });
     
      Ext.getCmp('menu-panel').add(OutilsTreePanel);
     
      var viewport = new Ext.Viewport({
        id: 'viewport',
        layout: 'border',
        items: [ menu ]
      });
    donc le but est de déplacer l'ajout de OutilsTreePanel dans le menu dans ce fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var OutilsTreePanel = new TreePanel({
      id: 'treepanel-outils',
      title: 'Outils',
      iconCls: 'menu-outils'
    });

  6. #6
    Membre expérimenté Avatar de JulienFio
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    Par défaut
    Essayes comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    include monTreePanel.js  //ou pas d'include si tu ne le veux pas
    include monPanel.js
    dans monPanel.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    var menu = new Ext.Panel({
        id:'menu-panel',
        region: 'west',
        title: 'Menu',
        border: false,
        collapsible: true,
        margins:'0 0 0 0',
        layout:'accordion',
        width: 200,
        minSize: 175,
        maxSize: 400,
      });
     
     
    if(Ext.getCmp('treepanel-outils')){ //Si OutilsTreePanel existe alors je l'ajoute au panel Menu
        menu.add(OutilsTreePanel);
    }
     
     
      var viewport = new Ext.Viewport({
        id: 'viewport',
        layout: 'border',
        items: [ menu ]
      });
    Est-ce ça que tu cherches à faire ?

    L'inverse est également possible:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    include monPanel.js  //ou pas d'include si tu ne le veux pas
    include monTreePanel.js
    dans monTreePanel.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var OutilsTreePanel = new TreePanel({
      id: 'treepanel-outils',
      title: 'Outils',
      iconCls: 'menu-outils'
    });
     
    if(Ext.getCmp('menu-panel')){ //Si le panel menu existe alors j'ajoute le TreePanel
    Ext.getCmp('menu-panel').add(OutilsTreePanel);
    }

  7. #7
    Invité
    Invité(e)
    Par défaut
    Oui, j'ai pensé à cette façon de faire et celle là que j'ai adopté au final. Mais ça reste assez bizarre de ne pas pouvoir accéder à un component pourtant bien présent.

  8. #8
    Membre expérimenté Avatar de JulienFio
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    Par défaut
    Ben justement, tu ne sais pas s'il existe ou pas dans ton cas. Du coup avant de faire un Add il te faut vérifier qu'il existe

  9. #9
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    voilà pourquoi je n'utilse jamais les recherche

    lorsque je créé un objet et que je risque d'en avoir besoin
    j'en garde une référence.
    du coup ensuite j'utilise la référence.

    par exemple dans mon tree pannel lorsque je clique dessus une entrée je regarde si la référence dan sle noeud est à null si elle est à null je créé le panel et place la référence dans le noeud.
    je place aussi la référence du neud dans le pannel

    si je reclique sur le noeud je sais que le pannel existe car la référence est valorisée.

    lorsque je ferme le pannel j'utilise la référence au noeud pour mettre à null sa référence au panel

    jamais je n'ai besoin de getCmp ou getElement

    A+JYT

Discussions similaires

  1. Accéder aux méthodes d'objets alloués dynamiquement
    Par Galip dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/05/2007, 22h57
  2. Réponses: 5
    Dernier message: 23/04/2007, 16h31
  3. Réponses: 4
    Dernier message: 11/04/2007, 14h26
  4. Accéder à une méthode depuis un form
    Par the java lover dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/03/2007, 21h36
  5. Réponses: 11
    Dernier message: 08/06/2006, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo