3

AngularJS と一緒に Google Maps API を使用しています。を使用してポリゴンの色を変更する次の関数がありますsetOptions

desk.modColor = function (color) {
     desk.setOptions({ fillColor: color });
}

次のようなコードを使用して、angularJS 内から呼び出しています。

$scope.focusedDesk.modColor('#0592fa');

ただし、これは約 75% の確率でしか機能しません。AngularJS で十分なスコープ操作を行った後、これは機能しなくなります。呼び出し直後console.logのオブジェクトの場合、正しいがありますが、マップ上のポリゴンは視覚的に更新されていません。deskmodColorfillColor

なぜこれが起こっているのですか?setOptionsマップ/ポリゴンを視覚的に更新する方法はありますか? ありがとう。

4

3 に答える 3

2

条件1

angularJS 内で任意の形式で DOM を操作している場合は、おそらくディレクティブを使用する必要があります。この場合は、それを行うためのディレクティブを作成する必要があります。

angular.module('myModule',[])
.directive('myDirective',function(){
   return {
      scope: { focusedDesk:'=' },
      link: function(scope, iElement, iAttrs){
               scope.$watch('your-whatever-object-or-property-you-want-to-watch-over', function(){
                                   //your desired action
                              })
            }
   }
})

使用法は次のようになります。

<div my-directive focusedDesk='focusedDesk'></div>


条件2

プロパティの値だけが気になる場合は、関数$scope.$watchで上記と同じことができますcontroller

于 2013-08-12T22:55:50.983 に答える
0

setOptions が Map/Polygon を視覚的に更新するようにする方法はありますか?

はい、電話します

if (!$scope.$$phase) {$scope.$apply();}
于 2013-08-30T14:30:29.457 に答える