AngularJS范围与GMaps

时间:2013-09-11 00:09:26

标签: javascript angularjs

尝试从GMaps事件修改角度模型时遇到一些麻烦,继承人是代码:

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 ...为什么会这样?

1 个答案:

答案 0 :(得分: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();
)};