代码之家  ›  专栏  ›  技术社区  ›  user13286

如何在调用函数之前将参数传递给函数

  •  0
  • user13286  · 技术社区  · 7 年前

    我发现了一个类似的问题,其答案建议使用 Function.prototype.bind() gmapsInit is not a function

    这是我的密码:

    function initMap(lat, lng) {
    	return function() {
    		var loc = {lat: lat, lng: lng};
    		console.log(loc);
    		var panorama = new google.maps.StreetViewPanorama(
    		    document.getElementById('map'), {
    		      position: loc,
    		      pov: {
    		        heading: 10,
    		        pitch: 10
    		      },
    		      linksControl: false,
    		      panControl: false,
    		      streetViewControl: false,
    		      motionTracking: true
    		    });
    		map.setStreetView(panorama);
    	}
    }
    
    $(function() {
      $('div').click(function() {
        var lat = parseFloat($(this).attr('data-lat')),
    		lng = parseFloat($(this).attr('data-lng'));
            
        // Here's what I tried
        var gmapsInit = initMap.bind(null, lat, lng);
            
        $('.result').append('<div id="map"></div><script async defer src="https://maps.googleapis.com/maps/api/js?key=MYAPIKEY&callback=gmapsInit"></script>');
      });
    });
    <div data-lat="48.8584" data-lng="2.2945">
    
    <div class="result"></div>
    1 回复  |  直到 7 年前
        1
  •  1
  •   chiliNUT    7 年前

    你不需要捆绑,只要确保你的 callback

    var lat = parseFloat($(this).attr('data-lat')),
        lng = parseFloat($(this).attr('data-lng'));
    
    window.gmapsInit = function(){
        initMap(lat, lng)();
    }
     $('.result').append( //...