4

我正在使用带有 Leaflet 指令的 AngularJS。

要将标记传递给我正在使用服务的指令,并且效果很好。

正如我所料,标记存储在$scope.markers中。

但是,当我拖动标记时 $scope.markers 的值未更新,因此我添加了一个监视侦听器进行检查,如下所示:

$scope.$watch("markers", function(newValue, oldValue) {
$log.info($scope.markers.m1);
});

当我从主控制器更新标记时,我看到它们正在更新。在拖动时他们没有,所以我更改了指令以将 markerData 包含在 dragend 上的广播事件中,但是我很惊讶我需要更改 angular-leaflet-directive 以获得所需的结果。

在 MapController 和创建标记的控制器中,我添加了:

$scope.$on('leafletDirectiveMarker.dragend',function (e,marker) {
var markerName=marker.markerName
$scope.markers[markerName]=marker.markerData
        });

这现在工作正常,但我不禁认为我做错了。

4

1 回答 1

2

您是如何将markers数组添加到您的范围的?根据示例页面,您需要通过调用来扩展范围angular.extend($scope, {...});

http://tombatossals.github.io/angular-leaflet-directive/#!/examples/dragging-markers(在javascript 角度控制器选项卡中)

于 2013-09-19T15:28:19.030 回答