ArcGIS API for JavaScriptは現在バージョン3.11です。バージョン3.0以降、私たちはほとんどdojo/_base/connect<\/A>の使用をやめているはずです。もし古いライブラリやdojoxの何かでどうしても困っている場合は、少なくともdojo/aspect<\/A>を使ってください。今では、誰もがイベントをリッスンするためにdojo/on<\/A>を使っているはずです。もしかするとdojo/topic<\/A>を使っているかもしれませんが、それはまた別のブログ記事の話です。<\/P><\/P>dojo/onの使い方について詳しく説明するつもりはありませんが、特定の状況で必要になるかもしれないクールなことをするためにdojo/onを拡張するいくつかの方法を共有すると面白いと思いました。以前、マップ上のクリックイベントのイベントリスナーを切り替えられるようにする必要がありました。最初にマップをクリックしたときは選択処理を行い、2回目にクリックしたときは選択とは無関係な別のメソッドを実行したかったのです。これにはdojo/on#pausable<\/A>などを使う方法もありましたが、私は単にdojo/onを拡張して必要なことを実現しました<\/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>それから最近のスレッド<\/_A>を考えていて、 なぜ一度だけ使えるイベントリスナーが作れないのか?と思いました。特定の状況で役立つことがあると思うので、レビューできるサンプルを作りました。別のアプローチとしてこちらもあります: こちらもご覧ください。Speak!<\/_STRONG>ボタンをクリックするとアラートメッセージが表示されます。 Toggle<\/_STRONG>ボタンをクリックしてから再度 Speak!<\/_STRONG> をクリックすると異なるメッセージが表示されます。 One time!<\/_STRONG> ボタンをクリックすると1秒後にアラートメッセージがポップアップします。遅延は任意なので、100msに変更しても構いません。同じボタンをもう一度クリックしてみてください。何も起こりません。<\/_P><\/_P>これは状況に応じてできることの簡単な例で、共有すると楽しいと思いました。このような小技は私のブログでも見ることができます。<\/_P><\/_P>さあ、コードを書きましょう、友よ。<\/_P><\/_BODY><\/_HTML>
<\/P>
dojo/onの使い方について詳しく説明するつもりはありませんが、特定の状況で必要になるかもしれないクールなことをするためにdojo/onを拡張するいくつかの方法を共有すると面白いと思いました。以前、マップ上のクリックイベントのイベントリスナーを切り替えられるようにする必要がありました。最初にマップをクリックしたときは選択処理を行い、2回目にクリックしたときは選択とは無関係な別のメソッドを実行したかったのです。これには
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>それから最近の
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.