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

标签 javascript parameters

我正在创建一个页面,人们可以在其中单击各种链接,它会将纬度/经度数据传递到 Google map API 初始化函数中,但我不知道如何将参数传递到函数中。

我发现了一个类似的问题,其答案建议使用 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>

最佳答案

您不需要绑定(bind),只需确保您的回调全局可用。

var lat = parseFloat($(this).attr('data-lat')),
    lng = parseFloat($(this).attr('data-lng'));

window.gmapsInit = function(){
    initMap(lat, lng)();
}
 $('.result').append( //...

关于javascript - 如何在调用函数之前将参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52300445/

相关文章:

javascript - 导航后 Onsen UI 页面无法正确加载

C# 在循环中动态引用对象

objective-c - Objective-C 中的 HTTP Post 请求不起作用

windows - 如何将 Hudson/Jenkins 参数传递给 Windows 批处理命令

javascript - jQuery 的 .delay 方法是如何工作的?

javascript - 使用 page.on ('customEvent' 监听自动触发的客户端事件,fn)

javascript - Bootstrap - 在固定高度的缩略图中调整标题文本

javascript - 什么是 ECMAScript?

c# - 将对象 [] 传递给参数对象 [] 不起作用

Java调用带有数组参数的方法