ng-click指令不会调用整个函数

时间:2016-05-04 13:02:06

标签: javascript angularjs google-maps angularjs-scope

我正在尝试在谷歌地图中移动一个标记。我有一个移动他们的功能,他们工作正常。为了测试,我在脚本中调用了它们,它们按预期工作。

但是当我试图在ng-click指令中调用该函数时,函数被调用但整个代码没有被执行。

<md-button class="md-raised md-primary" ng-click="x()">Click here to move the marker</md-button>

方法:

$scope.x = function ()
      {
        console.log('a');
          $scope.marker = {
          id: 6,
          coords: {latitude:-28.226349,longitude:-52.381581}
          };
      }

在控制台内打印'a',但标记不会移动到纬度:-28.226349,经度:-52.381581。

如果我在脚本中调用这样的函数:

$scope.x = function ()
      {
        console.log('a');
          $scope.marker = {
          id: 6,
          coords: {latitude:-28.226349,longitude:-52.381581}
          };
      }

      $scope.x();

加载页面时,标记位于纬度:-28.226349,经度:-52.381581。

整个HTML:

<md-button class="md-raised md-primary" ng-click="x()">Click here to move the marker</md-button>
<div id="map" ng-controller="MapCtrl">
<ui-gmap-google-map center='map.center' zoom='map.zoom'  options="map.options">

<ui-gmap-marker coords="marker.coords" options="marker.options" events="marker.events" idkey="6"></ui-gmap-marker>

</ui-gmap-google-map>

1 个答案:

答案 0 :(得分:1)

看看这个codepen here

它按预期工作。我认为问题在于你的idkey。使idkey动态化并将其绑定到标记对象的ID。

<强> HTML

<div ng-app="myApp" ng-controller="gMap">
  <md-button class="md-raised md-primary" ng-click="x()">Marker</md-button>
  <ui-gmap-google-map 
    center='map.center' 
    zoom='map.zoom' aria-label="Google map">

    <ui-gmap-marker
      coords="marker.coords" options="marker.options" events="marker.events" idkey="marker.id">
      <ui-gmap-window>
        <div>{{marker.window.title}}</div>
      </ui-gmap-window>
    </ui-gmap-marker>

  </ui-gmap-google-map>
</div>

<强>控制器

myApp.controller("gMap", function($scope) {
  $scope.x = function() {
    console.log('a');
    $scope.marker = {
    id: 6,
    "coords": {
      "latitude": "40.7903",
      "longitude": "-73.9597"
    }
  }
  }
  $scope.marker = {
    id: 6,
    "coords": {
      "latitude": "45.5200",
      "longitude": "-122.6819"
    }
  }
  $scope.map = {
    center: {
      latitude: 39.8282,
      longitude: -98.5795
    },
    zoom: 4
  };
});