0

尝试从 GMaps 事件修改 Angular 模型时遇到了一些麻烦,代码如下:

function CtrlGMap($scope) {

var mapOptions = {
    center: new google.maps.LatLng(-54.798112, -68.303375),
    zoom: 11,
    //disableDefaultUI: true,
    mapTypeId: google.maps.MapTypeId.SATELLITE
};

map = new google.maps.Map(document.getElementById('mapCanvas'), mapOptions);

google.maps.event.addListener(map, "click", function(e) {
    lat = e.latLng.lat();
    lng = e.latLng.lng();

    $scope.lat = lat;
)};

HTML:

<body ng-controller="CtrlGMap">

<div id="mapCanvas"></div>

<form role="form" style="width: 30%; margin:0 auto;">

    <div class="form-inline">
        <div class="form-group">
            <label class="sr-only" for="lat">Latitud</label>
            <div class="input-group">
                <span class="input-group-addon">Lat</span>
                <input type="text" class="form-control" id="lat" ng-model="lat" disabled>
            </div>
        </div>
    </div>
</form>

问题是我无法从 GMap 事件内部访问 $scope ......为什么会这样?

4

1 回答 1

0

我认为如果您要更改 angularjs 领域之外的范围,则需要调用 $scope.apply() 。

所以像这样:

google.maps.event.addListener(map, "click", function(e) {
    lat = e.latLng.lat();
    lng = e.latLng.lng();

    $scope.lat = lat;
    // Let angularjs know.
    $scope.$apply();
)};
于 2013-09-11T00:16:35.970 回答