2009-05-26 2 views
0

をマップI私のクライアントサイドのJavaScriptをすべて素敵なオブジェクトにラップしています。とにかく私はそれらを作ることができるようにかわいい。は、私は<em>が(それ<em>は本当にJavaScriptを;-)制御することが可能</em>の場合)、これは特に風変わりな、私のJavaScriptコードを制御しようとする試みである</em>を考えていない

私が遭遇した最初の問題の1つは、これらのオブジェクト内のイベントにイベントを付加することでした。すべてのイベントは、現在のオブジェクトを呼び出してそのように

var obj = this; 
_map.AttachEvent("onclick", function(event){ obj.onClickMap(event); }); 

:それはすぐにこのは常にあなたはそれが意味を考える何を意味するものではありませんし、その結果として、私のコードは次のように見ていることが明らかになりました。仕事は良い 'un。

しかし、Virtual Earthマップオブジェクトからイベントを切り離すときは、最初に割り当てた関数を渡す必要があります。そのため、割り当てられていない関数だけが割り当てられます。これは動作しません:

_map.DetachEvent("onclick", function(event){ obj.onClickMap(event); }); 

...私は本当にそれを期待していません。しかし、私はその出来事を切り離す方法だけでは解決できません!

答えて

0

Aha!突然のインスピレーションのフラッシュは私にこの解決策をもたらしました(これは最良の方法かもしれませんが、うまくいくかもしれません)。イベントを取り付けるとき、私はこれを使用します。

_currentOnClickMapHandlerはクラスのグローバルで
// Attach map events 
var obj = this; 
_currentOnClickMapHandler = function(event){ obj.onClickMap(event); }; 
_map.AttachEvent("onclick", _currentOnClickMapHandler); 

私はこれを使用してイベントをデタッチする:

if (_currentOnClickMapHandler) 
{ 
    _map.DetachEvent("onclick", _currentOnClickMapHandler); 
} 

が動作しているようですが、その理由はので、私は解決策として、それについてあまり心配していないんだ理由として、私にはかなり明白です。誰かが良いアイデアを持っている(またはこの解決策に同意しているので、私はそれについてより安全に感じることができます)!

1

まあ明らかにあなたは、関数格納することができ:

var obj = this; 
var func = function(event){ obj.onClickMap(event); } 
_map.AttachEvent("onclick", func); 

をそして取り外し:

_map.DetachEvent("onclick", func); 

はその助けをしていますか?

+0

いいですね...私はそれと同時に入力したでしょう!同じことを言っている2つの独立した答えは、私のために十分なものではありません。ありがとう。 – Jason

関連する問題

 関連する問題