我在检索传递给我的eventHandler的参数时遇到了问题。
我正在使用geous将地图放入内部和activeadmin界面。该解决方案正在显示页面,但我没有在索引页面上工作。我们的想法是使用我的模型地理坐标将处理程序附加到标记上的dragend事件。
我的所作所为:
map.locations.add($fields.geousable('getLocation'), { draggable: true, on: { dragend: setFieldsLocation }});
和setFieldsLocation定义如下:
function setFieldsLocation (event) {
alert(setFieldsLocation.caller);
console.log(event);
$('.geousable').find("input")[0].value = event.data.lat;
$('.geousable').find("input")[1].value = event.data.lng;
};
所以第一行绑定处理程序(用于dragend),geous lib代码中的方法附加它并在事件触发时调用它,这里是片段:
var _onAdd = function (locationMarker, opts) {
// not relevant code
if (options.on) {
for (event in options.on) {
eventHandler = function() {
var handler = options.on[event],
location = locationMarker.location;
return function() {
handler.call(location);
}
}();
google.maps.event.addListener(locationMarker.marker, event, eventHandler);
}
}
};
调试器在调用处理程序时显示位置正确的位置变量,但是我无法在“setFieldsLocation”函数中获取位置变量。我尝试了很多东西。我更改了javascript函数的标题,我使用了event,e,arguments和这类东西:
console.log("arguments.callee.caller.name = " +
arguments.callee.caller.name);
console.log("arguments.callee.caller.toString() = " +
arguments.callee.caller.toString());
但没有运气。
对于解释此处发生的事情的想法将非常感激。