Присоединение и отсоединение событий к / от карт Virtual Earth - PullRequest
0 голосов
/ 26 мая 2009

Я не думаю, это особенно странно, но в попытке контролировать мой код JavaScript (если это , возможно реально контролировать JavaScript ;-)), я был оборачивая весь мой клиентский JavaScript в прекрасные объекты. Или так хорошо, как я могу сделать их в любом случае.

Одной из первых проблем, с которыми я столкнулся, было прикрепление событий к чему-либо внутри этих объектов. Вскоре стало очевидно, что это не всегда означает, что вы думаете, что это означает, и в результате мой код должен выглядеть следующим образом:

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

Таким образом, все события вызывают текущий объект. Работа хорошая 'un.

Однако, при отсоединении событий от объекта карты Virtual Earth вам нужно передать функцию, которую вы изначально присвоили, чтобы только она не была назначена. Это не работает:

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

... не то, чтобы я действительно этого ожидал. Но я не могу понять, как отключить это событие!

Ответы [ 2 ]

1 голос
/ 26 мая 2009

Ну, очевидно, вы могли бы сохранить функцию:

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

А потом отсоединить:

_map.DetachEvent("onclick", func);

Это помогает?

0 голосов
/ 26 мая 2009

Aha! Внезапная вспышка вдохновения привела меня к этому решению (которое может или не может быть лучшим способом, но оно работает). При прикреплении события я использую это:

// Attach map events
var obj = this;
_currentOnClickMapHandler = function(event){ obj.onClickMap(event); };
_map.AttachEvent("onclick", _currentOnClickMapHandler);

где _currentOnClickMapHandler является глобальным в классе.

Когда я хочу отменить событие, я использую это:

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

Кажется, работает, и причина для меня достаточно очевидна, почему, поэтому я не слишком обеспокоен этим как решением. Если у кого-то есть идея получше (или она согласна с этим решением, чтобы я чувствовала себя в ней более уверенно!), Пожалуйста, дайте мне знать.

...