我正在使用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
在视觉上更新地图/多边形?感谢。
答案 0 :(得分: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>
如果您只关心该属性的价值,可以$scope.$watch
与controller
函数中的{{1}}相同
答案 1 :(得分:0)
有没有办法确保setOptions更新Map / Polygon 视觉?
是的,请致电
if (!$scope.$$phase) {$scope.$apply();}
答案 2 :(得分:0)
事实证明我用来更改多边形颜色的代码没有任何问题。我的一些其他代码是复制多边形,因此它们会堆叠,突出显示的多边形将被较新的重复项隐藏。