0

我对标记上的点击事件的性能有疑问。

这是我的地图视图:

<div class="map-wrapper">
    <map center="{{mapCenter}}" street-view-control="false" zoom-control="false" map-type-control="false" zoom="14">
        <marker position="{{place.coords}}" title="{{place.name}}" icon="{{place.icon}}" ng-repeat="place in places" on-click="select(place.id)"></marker>
    </map>
</div>

这是一个调用相同功能的按钮(相同的视图和控制器):

<button ng-click="select(null, 13)">My test button</button>

这是我的功能:

$scope.select = function(event, placeId) {
  $log.debug('select called');
  $location.path('/places/' + placeId);
};

当我单击按钮时,console.log 会出现,并且位置更改会立即发生。当我单击标记时,console.log 会立即出现,但位置更改最多需要 5 秒才能发生。

知道这怎么可能吗?

4

2 回答 2

0

尽量避免 ng-repeat 使用 ui-gmap-markers 代替它有一个点击参数来连接你的处理程序。

于 2015-02-23T01:16:22.280 回答
0

在我的例子中,在超时函数中对 $scope 调用 $digest() 就可以了:

$timeout(function () {
    $scope.$digest();
});
于 2015-07-21T18:19:20.877 回答