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

Bibliothèques & Frameworks Discussion :

Ecouter un event "onclick" sur un bouton avec Dojo 1.7 [Dojo]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 307
    Points : 110
    Points
    110
    Par défaut Ecouter un event "onclick" sur un bouton avec Dojo 1.7
    Bonjour,

    Me revoilà. Je suis face à un mystère.
    J'ai une function dans laquelle je voudrais "écouter" le clic sur le bouton de la toolbar de la page.

    Je n'ai pas d'erreur, mais rien ne se passe quand je clique sur ledit bouton.

    Voici comment je déclare ma toolbar :
    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
    <div data-dojo-type="dijit.Toolbar">
    	<div data-dojo-type="lib.widgets.GroupToggleButton" 
    		 data-dojo-props="groupName:'planViewType'"
    		 id="toolbar.setViewMode" iconClass="dijitEditorIcon dijitEditorIconCut" showLabel="true">
    		View
    	</div>
     	<div data-dojo-type="lib.widgets.GroupToggleButton"
    		 data-dojo-props="groupName:'planViewType'"
    		 id="toolbar.setEditMode" iconClass="dijitEditorIcon dijitEditorIconCut" showLabel="true">
    		Edit
    	</div>
    	<div data-dojo-type="lib.widgets.GroupToggleButton"
    		 data-dojo-props="groupName:'planViewType'"
    		 id="toolbar.setControlMode" iconClass="dijitEditorIcon dijitEditorIconCut" showLabel="true">
    		Control
    	</div>
    	<div data-dojo-type="dijit.form.Button" id="toolbar.test"
             data-dojo-props="iconClass:'dijitEditorIcon dijitEditorIconCut', showLabel:false">Test</div>
    </div>
    Voici comment je me connecte à l'évènement
    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
    controllers.PlanController = {
    	planTree:null,
    	//...
    	initUI:function(){
    		// Connect the events
    		dojo.connect(this.planTree, "onClick", this, function(item, node, evt){
    			//...
    		});
     
    		dojo.connect(dojo.byId("toolbar.setViewMode"), "onClick", this, function(){this.initViewMode();});
    		dojo.connect(dojo.byId("toolbar.setEditMode"), "onClick", this, function(){this.initEditMode();});
    		dojo.connect(dojo.byId("toolbar.setControlMode"), "onClick", this, function(){this.initControlMode();});
    		dojo.connect(dojo.byId("toolbar.test"), "onClick", this, function(){alert("test");});
    	},
    	//...
    }
    Le 1er connect fonctionne (dojo.connect(this.planTree...).
    Les autres non... rien ne se passe.

    Comment cela se fait-il ?

    PS : j'utilise Dojo 1.7

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2005
    Messages : 307
    Points : 110
    Points
    110
    Par défaut
    Je me suis rappelé d'une phrase que Emmanuel Remy m'a dit dans ce post :
    les noms des événements doivent être ceux du DOM, donc sans majuscule (onclick et pas onClick)
    Je me suis donc dit qu'il y avait 2 sortes d'évènements :
    • Les évènement DOM
    • Les évènements dojo (widgets)
    Est-ce bien cela ?

    J'ai donc remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dojo.connect(dojo.byId("toolbar.setViewMode"), "onClick", this, function(){this.initViewMode();});
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dojo.connect(dojo.byId("toolbar.setViewMode"), "onclick", this, function(){this.initViewMode();});
    Maintenant ça fonctionne !

  3. #3
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Oui c 'est bien cela

    Quand tu fais un dojo.connect sur un élément du DOM tu t'abonnes alors aux events du DOM, comme onclick par exemple.

    Quand tu utilises un widget dijit (le bouton par exemple), le concepteur fait lui même le dojo.connect (souvent via le template attachEvent) et délègue ensuite le traitement vers une fonction qu'il a choisie, onClick par exemple.

    Conscient de cette "confusion" il a été ajouté à partir de la 1.7 une fonction utile "on" sur les widgets. On peut donc maintenant écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monDijit.on("click", function() {...});
    Toutefois méfiance car le code de la function ne s'exécute pas dans le scope du widget... donc dojo.hitch pour y remédier si besoin

    ERE

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. appliquer onclick sur un bouton avec jquery
    Par nana_md dans le forum jQuery
    Réponses: 1
    Dernier message: 10/09/2013, 15h06
  2. [MFC] Raccourcis sur un bouton avec visual 2005
    Par ricky78 dans le forum MFC
    Réponses: 3
    Dernier message: 09/10/2007, 14h28
  3. onclick sur a href avec redirection vers un autre fichier
    Par taka10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/08/2007, 15h39
  4. OnClick sur un bouton créé dynamiquement
    Par Jeankiki dans le forum Delphi
    Réponses: 4
    Dernier message: 05/11/2006, 18h44
  5. Focus sur les boutons avec plusieurs formulaire
    Par davids21 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/04/2005, 15h48

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