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(); を呼び出す必要があります。

これは、これらのコールバックが角度範囲内にある場合でも、すべての外部コールバック関数に必要です。自動 $apply は、$timeout や $q サービスなどの角度のあるコールバックに対してのみ機能します

于 2014-08-21T14:45:07.963 に答える
0

コードは実際に機能しています。メソッド$scopeを使用してを更新するだけです。$apply()ここにフィドルがあります:

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

于 2014-08-21T14:43:49.160 に答える