0

我正在尝试使用新的地理代码值更新字段,但即使模型已更新,它也不会与第一次调用绑定。我的控制器代码如下:

function TheReportCtrl($scope) {
    $scope.code = [];
    $scope.code.lat = "19.2555500";
    $scope.getCode = function () {
        var geocoder = new google.maps.Geocoder();
        var address = "12323 Barker Cypress Rd, Cypress, Texas"
        geocoder.geocode({
            'address': address
        }, function (results, status) {
            if (status === google.maps.GeocoderStatus.OK) {
                $scope.code.lat = results[0].geometry.location.k;
            } else {
                console.log("Geocoding failed: " + status);
            }
        });
    }
} 

我的代码缺少什么?

这是 JsFiddle 代码示例

4

2 回答 2

2

你错过了 $scope().$apply();

http://fiddle.jshell.net/yfLek2cw/

此外,原始小提琴中的 Angular CDNLink 也不起作用。原因是,地理位置回调不是从角度完成的。因此脏检查机制在那里不起作用。要再次开始脏检查,您必须调用 $scope.$apply();

所有外部回调函数都需要这样做,即使这些回调在角度范围内。Auto $apply 仅适用于 $timeout 或 $q 服务等角度回调

于 2014-08-21T14:45:07.963 回答
0

您的代码实际上正在运行,您只需要$scope使用该$apply()方法进行更新。这是一个小提琴:

http://fiddle.jshell.net/7v2dfLsv/3/

于 2014-08-21T14:43:49.160 回答