Javascript 使用数据绑定时角度地理编码器失败
我用的是: 基本上,当我使用这个时,它工作得很好:Javascript 使用数据绑定时角度地理编码器失败,javascript,angularjs,Javascript,Angularjs,我用的是: 基本上,当我使用这个时,它工作得很好: <reverse-geocode lat="40.730885" lng="-73.997383" /> 但问题是 当我有这样的时候: <reverse-geocode lat="{{vm.user.location[1]}}" lng="{{vm.user.location[0]}}"></reverse-geocode> 它不能处理{vm.user.location[1]}和{{vm.user
<reverse-geocode lat="40.730885" lng="-73.997383" />
但问题是
当我有这样的时候:
<reverse-geocode lat="{{vm.user.location[1]}}" lng="{{vm.user.location[0]}}"></reverse-geocode>
它不能处理{vm.user.location[1]}和{{vm.user.location[0]}的值,因为出于某种原因,它传递的是0而不是实际值
当我把它输入一个范围时,值会很好地显示出来
<span> Lat:{{vm.user.location[1]}}, Long:{{vm.user.location[0]}} </span>
Lat:{{vm.user.location[1]},Long:{{vm.user.location[0]}
我不确定发生了什么:(
为什么它认为我传递的是0的值,而不是数据库中的实际lat/long值?您需要观察属性的变化,因为您正在动态加载位置数据,所以您还需要在这些值发生变化时更新指令 以下是如何添加观察行为:
.directive('reverseGeocode', function ($timeout) {
return {
restrict: 'E',
template: '<div></div>',
link: function (scope, element, attrs) {
attrs.$observe('lat', geoCode);
attrs.$observe('lng', geoCode);
function geoCode() {
$timeout(function() {
var geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(attrs.lat, attrs.lng);
geocoder.geocode({ 'latLng': latlng }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
element.text(results[1].formatted_address);
} else {
element.text('Location not found');
}
} else {
element.text('Geocoder failed due to: ' + status);
}
});
});
}
},
replace: true
}
})
指令('reverseGeocode',函数($timeout){
返回{
限制:'E',
模板:“”,
链接:函数(范围、元素、属性){
属性:$observe('lat',地理编码);
属性:$observe('lng',地理编码);
函数geoCode(){
$timeout(函数(){
var geocoder=new google.maps.geocoder();
var latlng=新的google.maps.latlng(attrs.lat,attrs.lng);
geocoder.geocode({'latLng':latLng},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
如果(结果[1]){
element.text(结果[1]。格式化的\u地址);
}否则{
元素。文本(“未找到位置”);
}
}否则{
element.text('地理编码器由于:'+状态而失败);
}
});
});
}
},
替换:正确
}
})
演示:“基本上,我的工作状态很好。”。在什么情况下可以正常工作?抱歉,我做了更新。你能在演示中复制这个问题吗?我不能,对我来说可以正常工作。好的,让我试试。所以基本上,你所做的对我来说也可以正常工作。我有一个db调用来获取一些信息,其中一个属性是一个名为location的数组。出于某种原因,当我使用绑定来传递这些值。但是,正如你所看到的,当我在该范围内输出值时,这些值显示得很好。啊,所以
vm.user.location
加载了REST调用?当然,这不会起作用,在时间指令使用它们之前没有值。哇。你是一位优秀的老师,非常有帮助。我喜欢这个网站,因为我每天都能学到很多。谢谢你现在我要读一些类似的东西来了解更多关于$observe的内容。我喜欢这段旅程!