Как я могу передать результаты обратного вызова через объект? - PullRequest
2 голосов
/ 13 апреля 2010

Я выполняю локальный поиск в Google и хочу вернуть значение lat / long через объект. Сам поиск Google работает нормально.

При проверке (с использованием console.log или alert ()) в самом объекте поле результатов выглядит как заполненное ОК.

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

Чего-то фундаментального здесь не хватает? Спасибо!

function GeoSearch() {  

    this.results = [];  

    this.searchComplete = function(localSearch) {  

        if(localSearch.results[0]) {  
            var resultLat = localSearch.results[0].lat;  
            var resultLng = localSearch.results[0].lng;  

            this.results = localSearch.results[0].lat;  
        }

     }

    this.getResults = function() {   
        return this.results;   
    }  

}  

function populateCoords(postcode) {  
     var localSearch = new google.search.LocalSearch();  
     var gs = new GeoSearch();  

     localSearch.setSearchCompleteCallback(gs, gs.searchComplete, [localSearch]);  
     localSearch.execute(postcode + ", UK");  

     alert(gs.getResults());  
}

1 Ответ

1 голос
/ 13 апреля 2010

Когда вы ссылаетесь на функцию gs.searchComplete, вы отсоединяете метод от объекта, которому он принадлежит. Переключите его на function () { gs.searchComplete(); }

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