3

我将 Google Maps API 与 AngularJS 一起使用。我有以下函数来改变多边形的颜色setOptions

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

我在 angularJS 中使用如下代码调用它:

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

但是,这仅在大约 75% 的时间内有效。在 AngularJS 中进行足够的范围操作后,这将停止工作。如果我console.log在调用desk后立即对象modColor,它具有正确的fillColor,但地图上的多边形没有在视觉上更新。

任何想法为什么会发生这种情况?有什么方法可以确保setOptions在视觉上更新地图/多边形?谢谢。

4

3 回答 3

2

条件一

如果您在 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 回答
1

事实证明,我用来更改多边形颜色的代码没有任何问题。我的一些其他代码正在复制多边形,因此它们会堆叠,并且突出显示的多边形将被较新的副本隐藏。

于 2013-09-07T17:24:33.077 回答
0

有什么方法可以确保 setOptions 直观地更新 Map/Polygon?

是的,打电话

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