2014-10-11 29 views
5

chức năng tôi đã sau:Tại sao biến không được xác định?

$.getJSON(
        'getTerminalinsideCircle.json', 
        { 
         centerLatitude: adressMarker.getPosition().lat(), 
         centerLongitude:adressMarker.getPosition().lng(), 
         radius :radius/1000 

        }, function (data) { 
          $.each(data, function (key, val) { 
            .... 
          } 
         ) 
        } 
      ) 

tôi muốn ro cấu trúc lại nó và viết lại nó như vậy:

$.getJSON(
       'getTerminalinsideCircle.json', 
       { 
        centerLatitude: adressMarker.getPosition().lat(), 
        centerLongitude: adressMarker.getPosition().lng(), 
        radius: radius/1000 

       }, renderTerminalOnMap(data) 
     ) 
     function renderTerminalOnMap(data) { 
      $.each(data, function (key, val) { 
         ... 
        } 
      ) 
     } 

nhưng trong giao diện điều khiển tôi thấy rằng Uncaught ReferenceError: data is not defined

Làm thế nào để cấu trúc lại nó phải không?

Trả lời

9

Sử dụng renderTerminalOnMap thay vì renderTerminalOnMap(data) làm gọi lại.

Bằng cách viết renderTerminalOnMap(data) bạn thực sự ngay lập tức gọi hàm với data tham số, đó là một biến undefined, và thiết lập các return value của chức năng đó như gọi lại.

Khi bạn chuyển các hàm làm gọi lại, bạn chỉ cần chuyển tên hàm, các thông số sẽ được truyền bởi chính hàm getJSON.

 $.getJSON(
       'getTerminalinsideCircle.json', 
       { 
        centerLatitude: adressMarker.getPosition().lat(), 
        centerLongitude: adressMarker.getPosition().lng(), 
        radius: radius/1000 

       }, renderTerminalOnMap 
     ); 

     function renderTerminalOnMap(data) { 
      $.each(data, function (key, val) { 
         ... 
        } 
      ) 
     } 
+1

ohhhhh. bạn đúng rồi. cảm ơn – gstackoverflow

Các vấn đề liên quan