L'API ArcGIS pour JavaScript est actuellement à la version 3.11. Depuis la version 3.0, nous devrions tous avoir principalement abandonné l'utilisation de dojo/_base/connect<\/A>. Si vous êtes vraiment dans une situation difficile en travaillant avec une bibliothèque plus ancienne ou peut-être quelque chose dans dojox, travaillez au moins avec dojo/aspect<\/A>. À présent, tout le monde devrait utiliser dojo/on<\/A> pour écouter les événements. Peut-être utilisez-vous même dojo/topic<\/A>, mais c'est un tout autre article de blog.<\/P><\/P>Je ne vais pas entrer dans les détails sur la façon d'utiliser dojo/on, mais je pensais qu'il serait intéressant de partager quelques façons dont vous pouvez étendre dojo/on pour faire des choses sympas dont vous pourriez avoir besoin dans des situations particulières. Il y a quelque temps, j'avais besoin de pouvoir basculer l'écouteur d'événements pour un événement click sur ma carte. La première fois que je cliquais sur la carte, je voulais faire une sélection et la deuxième fois que je cliquais sur la carte, je voulais exécuter une méthode différente sans rapport avec la sélection. Il y a plusieurs façons dont j'aurais pu procéder en utilisant dojo/on#pausable<\/A> ou autre chose. Mais j'ai décidé simplement de étendre dojo/on pour faire ce dont j'avais besoin<\/A>.<\/P><\/P>define([<\/P> 'dojo/on'<\/P>], function(on) {<\/P> 'use strict';<\/P> var _on = on;<\/P> _on.switchable = function(target, type, listener1, listener2) {<\/P> var funcs<\/P> , index<\/P> , currentListener<\/P> , signal;<\/P><\/P> funcs = [listener1, listener2];<\/P> index = 0;<\/P> currentListener = funcs[index];<\/P> signal = _on(target, type, function() {<\/P> return currentListener.apply(this, arguments);<\/P> });<\/P> signal.toggle = function() {<\/P> index = 1 - index;<\/P> currentListener = funcs[index];<\/P> };<\/P> return signal;<\/P> };<\/P> return _on;<\/P>});<\/P><\/PRE><\/P>Puis je pensais à ce fil récent<\/A> et me suis dit, Pourquoi ne puis-je pas créer un écouteur d'événement à usage unique ?<\/EM><\/P>Je suis sûr que cela pourrait arriver dans certaines situations, alors j'ai mis en place un exemple que vous pouvez consulter<\/A>. Celui-ci aussi<\/A> pour une approche différente.<\/P>Vous pouvez cliquer sur le bouton Speak!<\/STRONG> et obtenir un message d'alerte. Cliquez sur le bouton Toggle<\/STRONG> puis cliquez à nouveau sur Speak! pour obtenir un message différent. Cliquez sur le bouton One time! et un message d'alerte apparaîtra dans une seconde. Le délai est optionnel, vous pouvez donc changer le délai à 100ms si vous le souhaitez. Essayez de cliquer à nouveau sur ce même bouton et rien ne se passera.<\/><\/><\/><\/>Ce n'est qu'un exemple rapide de choses que vous pourriez faire selon votre situation et je pensais que ce serait amusant à partager. Vous pouvez voir plus de petites astuces comme celle-ci sur mon <A href="http:\/\/odoe.net\/blog\/\
<\/P>
Je ne vais pas entrer dans les détails sur la façon d'utiliser dojo/on, mais je pensais qu'il serait intéressant de partager quelques façons dont vous pouvez étendre dojo/on pour faire des choses sympas dont vous pourriez avoir besoin dans des situations particulières. Il y a quelque temps, j'avais besoin de pouvoir basculer l'écouteur d'événements pour un événement click sur ma carte. La première fois que je cliquais sur la carte, je voulais faire une sélection et la deuxième fois que je cliquais sur la carte, je voulais exécuter une méthode différente sans rapport avec la sélection. Il y a plusieurs façons dont j'aurais pu procéder en utilisant
define([<\/P> 'dojo/on'<\/P>], function(on) {<\/P> 'use strict';<\/P> var _on = on;<\/P> _on.switchable = function(target, type, listener1, listener2) {<\/P> var funcs<\/P> , index<\/P> , currentListener<\/P> , signal;<\/P><\/P> funcs = [listener1, listener2];<\/P> index = 0;<\/P> currentListener = funcs[index];<\/P> signal = _on(target, type, function() {<\/P> return currentListener.apply(this, arguments);<\/P> });<\/P> signal.toggle = function() {<\/P> index = 1 - index;<\/P> currentListener = funcs[index];<\/P> };<\/P> return signal;<\/P> };<\/P> return _on;<\/P>});<\/P><\/PRE><\/P>Puis je pensais à ce
Vous pouvez cliquer sur le bouton Speak!<\/STRONG> et obtenir un message d'alerte. Cliquez sur le bouton Toggle<\/STRONG> puis cliquez à nouveau sur Speak! pour obtenir un message différent. Cliquez sur le bouton One time! et un message d'alerte apparaîtra dans une seconde. Le délai est optionnel, vous pouvez donc changer le délai à 100ms si vous le souhaitez. Essayez de cliquer à nouveau sur ce même bouton et rien ne se passera.<\/><\/><\/><\/>Ce n'est qu'un exemple rapide de choses que vous pourriez faire selon votre situation et je pensais que ce serait amusant à partager. Vous pouvez voir plus de petites astuces comme celle-ci sur mon <A href="http:\/\/odoe.net\/blog\/\
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.