【发布时间】:2017-09-05 00:32:39
【问题描述】:
我的地理定位程序中有以下代码。
当用户允许设备获取地理位置时,geolocation() 函数被调用,geolocation 函数再次使用position 对象传播successPosition 函数,该对象提供纬度和经度。在successPosition 函数中,我还需要另一个名为btype(血型)的变量,因为我正在开发一个程序来查找最近的献血者。
所以过去我尝试使用 javascript prompt 方法询问用户要搜索哪种血型,但使用该方法用户必须手动输入血型,但我想要的是让用户从下拉列表中选择类型。但是如果我创建一个表单并询问用户类型并将对象传递给SuccessPosition 函数,position 对象变得未定义 - 这是因为这次我们只传递了btype 而我们没有position。当position 对象被传递时,另一个变量btype 是未定义的。
请告诉我解决问题的最佳方法是什么。
geolocation: function() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(this.successPosition, this.failurePosition, {
enableHighAccuracy: true,
timeout: 3000,
maximumAge: 4000
});
} else {
return (false);
}
},
successPosition: function(position) {
self.latitude = position.coords.latitude;
self.longitude = position.coords.longitude;
//self.btype = btype;
self.partial_url = ("/users?utf8=✓&longitude=" + (self.longitude)
+ "&latitude=" + (self.latitude)
+ "&btype=" + encodeURIComponent(self.btype));
window.location = self.partial_url;
}
【问题讨论】:
-
最好让您的代码适合框的范围,这样查看它的人就不必滚动太多。
-
您是否将服务用作单例?使用服务应该允许您将 btype 与位置解耦
标签: javascript jquery html angular