Вызов методов из замыканий функций - PullRequest
1 голос
/ 07 ноября 2011

У меня есть класс CoffeeScript:

class window.MapHandler
    map = null

    makeMap: () ->
        latlng = new google.maps.LatLng(54.711929,20.5089);
        myOptions =
            zoom: 12
            center: latlng
            mapTypeId: google.maps.MapTypeId.ROADMAP
        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions)
        @geocode("Калининград, Чернышевского 101")


    placeMarker: (location) ->
        marker = new google.maps.Marker(
            position: location
            map: @map)

    geocode: (address) ->
        geocoder = new google.maps.Geocoder
        geocoder.geocode(
            'address': address,
            (results, status) -> 
                if status is google.maps.GeocoderStatus.OK
                    map.setCenter(results[0].geometry.location)
                    @placeMarker(results[0].geometry.location)
                else alert("Geocode was not successful for the following reason: " + status);
        )

Существует проблема, когда я вызываю метод placeMarker из анонимной функции из метода геокодирования: visualizer.js: 37Uncaught TypeError: Object [объект DOMWindow] не имеет метода'placeMarker'

Как я могу вызвать этот метод?

1 Ответ

4 голосов
/ 07 ноября 2011
geocode: (address) ->
    geocoder = new google.maps.Geocoder
    geocoder.geocode(
        'address': address,
        (results, status) => 
            if status is google.maps.GeocoderStatus.OK
                map.setCenter(results[0].geometry.location)
                @placeMarker(results[0].geometry.location)
            else alert("Geocode was not successful for the following reason: " + status);
    )

Обратите внимание на жирную стрелку в строке 5 - она ​​сохраняет this и @ внутри крышки.

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