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 に答える