3

我正在使用angular-google-maps 指令,当我尝试删除绑定到控制器的标记时遇到了问题。我尝试了各种版本的 Angular,并尝试了 angular-google-maps 的 master 和 r1-dev 分支。

我不知道为什么,但它似乎被 $digest 函数所困扰,当我过滤掉列表项时不会发生这种情况。抛出的异常是这样的:

Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!

可以在这里看到一个演示,我的代码从 JavaScript 的第 550 行开始。上面的行是 angular-google-maps 指令。

http://jsfiddle.net/ADukg/4127/

4

1 回答 1

6

这对我有用,这是通过阅读 angular-google-maps 模块问题队列中的一些其他相关错误。

要点是您需要在手表内创建一个变量并使用它传递给模型参数。

基本JS:

controller('MainCtrl', function ($scope, $filter) {

   $scope.$watch("breweryFilter", function(breweryFilter){
      $scope.filteredMarkers = $filter("filter")($scope.breweries, breweryFilter);
      if (!$scope.filteredMarkers){
        return;
      }
   });
});

过滤器输入:

<input name="brewery-filter" class="form-control" type="search" ng-model="breweryFilter" placeholder="filter locations" />

包含标记指令的映射指令:

   <google-map
        center="map.center"
        zoom="map.zoom"
        draggable="true"
        control="map.control">

      <window
          show="breweryInfoWindow.showWindow"
          coords="breweryInfoWindow.coords"
          isIconVisibleOnClick="true"
          options="breweryInfoWindow.options"
          templateUrl="breweryInfoWindow.templateUrl"
          templateParameter="breweryInfoWindow.templateParams"
          data-ng-cloak>
        _
      </window>

      <markers
          models="filteredMarkers"
          idKey="'nid'"
          coords="'self'"
          icon="'icon'"
          doRebuildAll="true"
          fit='true'
          doCluster='true'
          control="map.markersControl"
          click="'onMarkerClicked'">
      </markers>

    </google-map>

希望这对你有帮助。

于 2014-04-26T10:12:50.363 回答