Свойства класса Mootools становятся неопределенными при вызове слушателя событий Google Maps - PullRequest
0 голосов
/ 01 ноября 2010

Я новичок в mootools и Google Maps API V3, и столкнулся со следующей проблемой:

Моя цель - создать базовый класс для представления универсальной кнопки и подклассов с различными обработчиками событий «щелчка» для добавления маркеров, полигонов и полилиний. Поэтому, используя mootools, я создаю базовый класс с базовыми свойствами внешнего вида и тремя подклассами с различными обработчиками событий «щелчка». Кнопки отображаются нормально, но когда я нажимаю одну из них, это говорит о том, что свойство не определено. Это проблема сферы? Как я могу изменить код для вызова правильного метода?


var GButton = new Class({    
    initialize: function(divObj, mapObj){
        this.div = divObj;
        this.map = mapObj;
        this.controlUI = document.createElement('DIV');
        this.controlUI.style.backgroundColor = 'white';
        this.controlUI.style.borderStyle = 'solid';
        this.div.appendChild(this.controlUI);
        this.controlText = document.createElement('DIV');
        this.controlText.style.fontFamily = 'Arial,sans-serif';
        this.controlUI.appendChild(this.controlText);
    }
});
//mootools 1.1
var GButtonMarker = GButton.extend({
    initialize: function(divObj, mapObj){
        this.parent(divObj, mapObj);
        this.controlUI.title = 'Click to add new marker';
        this.controlText.innerHTML = 'New Marker';
        google.maps.event.addDomListener(this.controlUI, 'click', this.updateControl);
    },
    //just to represent that it is pressed
    updateControl: function(){
        this.controlUI.style.backgroundColor = 'LightGrey'; //problem here! this.controlUI UNDEFINED! (while it is defined of course...)
        this.controlText.style.fontWeight = 'bold';
    } 
});

1 Ответ

0 голосов
/ 02 ноября 2010

вам нужно привязать экземпляр класса к обратному вызову:

google.maps.event.addDomListener(this.controlUI, 'click', this.updateControl.bind(this));

это оболочка mootools, кстати, а не Google (если есть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...