【发布时间】:2018-05-20 01:17:01
【问题描述】:
我有一个名为 addLocation 的 javascript/jQuery 函数,它是一个对象字面量的方法:
addLocation: function(latLng, address=false, elevation=false, pan=false)
{
$.when(geographic.getAddress(latLng), geographic.getElevation(latLng), geographic.getMagneticDeclination(latLng))
.done(function(data){
if (data.status != 'OK') {
window.alert(data.message);
}
if (pan) {
flyityourself.map.panTo(latLng);
flyityourself.map.setZoom(16);
}
flyityourself.addWaypoint(latLng, data);
flyityourself.addMarker(latLng, data);
})
.fail(function(msg) {
window.alert(msg);
}
);
},
三个函数 getAddress、getElevation 和 getMagneticDelination 都是名为“geographic”的第二个对象字面量的方法。
但是代码失败了。
在调试器中,我检查了所有四个函数。
- getAddress、getElevation 和 getMagneticDeclination 中的每一个都创建 $.Deferred 对象并按应有的方式返回 $.Deferred.promise 对象。
- getAddress、getElevation 和 getMagneticDelination 中的每一个都在检索正确的数据,并且都达到了各自的 resolve() 语句。
- 但在addLocation()中,data参数只包含getAddress返回的数据。
以前,只有 getAddress、getElevation 和 getMagneticDelination 这三个方法位于对象字面量“geographic”中。 addLocation 在一个扁平的 .js 文件中。在这种情况下,代码有效。
但是自从更改我的代码以将 addLocation 放入对象文字中后,代码开始失败。
$.when 在对象字面量中的工作方式是否有所不同,还是我忘记了限定某些内容?
问候。 克里斯 B.
【问题讨论】:
-
.done(function(data1, data2, data3){...}?! -
只是想知道
coords来自哪里。这里的这一行:map.panTo(coords);包含此变量。在您提供的代码示例中,我无法跟踪它。你能检查一下,如果它在某处声明? -
嗨@gil.fernandes。 map.panTo(coords) 是一个错误。这一行和它后面的一行应该分别是
flyityourself.map.panTo(latLng);和flyityourself.map.setZoom(16);。 Map 被定义为flyityourself的一个属性,并且是 google.maps.Map() 的一个实例。 -
@Pontiusthepilot 你能相应地更新帖子吗?
标签: javascript jquery object-literal .when