我正在使用带有传单指令的 AngularJS。
为了将标记传递给指令,我使用了一项服务,这很有效。
如我所料,标记存储在 $scope.markers 中。
但是,当我拖动标记时 $scope.markers 的值未更新,
所以我添加了一个 watch 监听器来检查,像这样:
$scope.$watch("markers", function(newValue, oldValue) {
$log.info($scope.markers.m1);
});
当我从主 Controller 更新标记时,我看到它们正在更新。
在拖动时他们没有,所以我更改了指令以在 dragend 上的广播事件中包含 markerData,但是我很惊讶我需要更改 angular-leaflet-directive 以获得所需的结果。
在 MapController 和创建标记的 Controller 中,我添加了:
$scope.$on('leafletDirectiveMarker.dragend',function (e,marker) {
var markerName=marker.markerName
$scope.markers[markerName]=marker.markerData
});
这现在工作正常,但我不禁认为我做错了。
最佳答案
您是如何将 markers
数组添加到示波器的?根据示例页面,您需要通过调用 angular.extend($scope, {...});
来扩展范围
http://tombatossals.github.io/angular-leaflet-directive/#!/examples/dragging-markers(在 javascript Angular Controller 选项卡中)
关于javascript - AngularJS Leaflet Directive $scope.markers 不会在拖动时更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18898175/