首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >angular-google-maps更新标记模型

angular-google-maps更新标记模型
EN

Stack Overflow用户
提问于 2015-02-05 21:01:38
回答 2查看 2.3K关注 0票数 1

我正在使用angular-google- map库,但是当我动态地向我的模型添加新标记时,我似乎无法获得要更新的地图。模型中的硬编码标记正确显示。

HTML

代码语言:javascript
复制
<ui-gmap-markers models="map.placeMarkers" coords="'self'" icon="'icon'" options="'options'" click="'onClicked'" modelsbyref="true"></ui-gmap-markers>

JS

代码语言:javascript
复制
$scope.map.placeMarkers = [
            {
                id: 1,
                latitude: 45,
                longitude: -74,
                options: {},
                title: 'Test 123'
            },
            {
                id: 2,
                latitude: 15,
                longitude: 30,
                options: {},
                title: 'Test 1234'
            }
        ];

然而,当我这样做时,上面的代码运行得很好:

代码语言:javascript
复制
var place = {
   id: 3,
   latitude: 455,
   longitude: -574,
   options: {},
   title: 'Test 1233455'
};

$scope.map.placeMarkers.push(place);

模型已更新,但地图未更新。我尝试过使用$scope.$apply(),但得到了一个错误,因为摘要周期已经在进行中了。

EN

回答 2

Stack Overflow用户

发布于 2015-03-29 04:07:25

您需要在ui-gmap-markers指令中将modelsbyref设置为false

代码语言:javascript
复制
 <ui-gmap-markers models="places" coords="'self'" modelsbyref="false">  

   </ui-gmap-markers>
票数 0
EN

Stack Overflow用户

发布于 2016-06-29 15:06:46

我也是一样。花了几个小时来寻找解决方案。

似乎只要我们更新标记,angularjs就不会立即更新它。只需在将新标记推送到数组后调用$scope.$digest()即可。

还要检查$scope.$apply()函数,它会自动调用$scope.$digest()。请参考本教程,其中详细解释了:tutorial showing $scope.$digest(), $scope.$apply, $scope.watch

它是在上面的教程中编写的:

在某些特殊情况下,AngularJS不会为您调用$digest()函数。您通常会注意到数据绑定不会更新显示的值,从而检测到这一点。在这种情况下,调用$scope.$digest()就可以了。或者,您也可以使用$scope.$apply()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28344687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档