我正在使用带有 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
});
这现在工作正常,但我不禁认为我做错了。