我正在使用angular-google-maps库,但是当我动态地将新标记添加到我的模型时,我似乎无法更新地图。模型中的硬编码标记正确显示。
HTML
<ui-gmap-markers models="map.placeMarkers" coords="'self'" icon="'icon'" options="'options'" click="'onClicked'" modelsbyref="true"></ui-gmap-markers>
JS
$scope.map.placeMarkers = [
{
id: 1,
latitude: 45,
longitude: -74,
options: {},
title: 'Test 123'
},
{
id: 2,
latitude: 15,
longitude: 30,
options: {},
title: 'Test 1234'
}
];
但是当我这样做时,上述工作正常:
var place = {
id: 3,
latitude: 455,
longitude: -574,
options: {},
title: 'Test 1233455'
};
$scope.map.placeMarkers.push(place);
模型是更新但不是地图。我已尝试使用$ scope。$ apply()但由于摘要周期已在进行中而出现错误。
答案 0 :(得分:0)
你需要在ui-gmap-markers指令中将modelsbyref设置为false
<ui-gmap-markers models="places" coords="'self'" modelsbyref="false">
</ui-gmap-markers>
答案 1 :(得分:0)
我也一样。花了几个小时寻找解决方案。
似乎每当我们更新标记时,angularjs都不会立即更新它。在将新标记推送到数组后,只需调用 $ scope。$ digest()。
同时检查 $ scope。$ apply()函数,它会自动调用$ scope。$ digest()。 请参阅本教程详细说明: tutorial showing $scope.$digest(), $scope.$apply, $scope.watch
它写在上面的教程中:
您可能会遇到AngularJS没有为您调用$ digest()函数的一些极端情况。您通常会通过注意数据绑定不会更新显示的值来检测到这一点。在这种情况下,调用$ scope。$ digest(),它应该工作。或者,您也许可以使用$ scope。$ apply()