我正在处理一个应用程序,需要将用户提供的地址转换为lat lng并更新谷歌地图。我使用角度js版本1.0.0问题是在Firefox中我不断收到太多的递归错误。
app.controller("BasicMapController", function($scope, $timeout){
.......
angular.extend($scope, {
.......
checking_address: false// curently trying to get lat long from address
});
......
我不得不创建一个ngBlur指令,因为1.0.0没有它,并且由于太多其他代码中断,升级不是一个选项。
app.directive('ngBlur', function() {
return function( scope, elem, attrs ) {
elem.bind('blur', function() {
scope.$apply(attrs.ngBlur);
});
};
});
在我的页面上,我将ng-blur =“onblur_()”添加到相关文本区域,然后在我的控制器中定义相关功能:
$scope.onblur_ = function ($event) {
if ($scope.checking_address)
return;
var map_scope = angular.element($('.google-map')).scope();
var address = document.getElementById("id_address").value;
if ( !! !address)
return;
$scope.checking_address = true;
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': address
}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map_scope.map._instance.panTo(results[0].geometry.location);
if ($scope.markers[0] == undefined) {
$scope.markers[0] = new google.maps.Marker({
map: map_scope.map._instance,
position: results[0].geometry.location
});
} else
$scope.markers[0].setPosition(results[0].geometry.location);
}
$scope.checking_address = false;
});
}
代码在Opera和Chromium中运行良好。关于什么可能是错的或者我如何解决这个问题的任何想法?